900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 【Qt学习笔记】10.主窗口 The Main Window

【Qt学习笔记】10.主窗口 The Main Window

时间:2023-06-21 02:12:28

相关推荐

【Qt学习笔记】10.主窗口 The Main Window

一、工具栏和菜单

只有主框架窗口(QMainWindow)才能够添加菜单和工具栏

QAction 命令

步骤:

1、添加action (动作编辑器) (在Qt Designer 界面的右下角))

2、把action拖动到菜单或工具栏里

3、在代码里加上响应处理函数

示例代码:

Test10_1a_12_11::Test10_1a_12_11(QWidget*parent):QMainWindow(parent){ui.setupUi(this);assert(connect(ui.actionAct1,SIGNAL(triggered()),this,SLOT(OnHelpButton())));}intTest10_1a_12_11::OnHelpButton(){return0;}

接下来实现一个简单的应用。

二、单文档程序

单文档程序(Single Document):

只能编辑一个文档,如: Notepad、Word

多文档程序(Multiple Document):

可同时编辑多个文档,如:Notepad++,UltraEdit , 使用选项卡,每页代表一个文档

做一个简单的文本编辑器,实现以下功能:

1、打开文件

2、编辑文件

3、保存文件

程序示例:

Test10_1a_12_11::Test10_1a_12_11(QWidget*parent):QMainWindow(parent){ui.setupUi(this);assert(connect(ui.actionNew,SIGNAL(triggered()),this,SLOT(OnBtnNew())));assert(connect(ui.actionSave,SIGNAL(triggered()),this,SLOT(OnBtnSave())));assert(connect(ui.actionOpen,SIGNAL(triggered()),this,SLOT(OnBtnOpen())));}intTest10_1a_12_11::OnBtnNew(){ui.plainTextEdit->setEnabled(true);return0;}intTest10_1a_12_11::OnBtnSave(){QStringFilePath=QFileDialog::getSaveFileName(this,AfGbk::ToUnicode("保存在..."));if(FilePath.length()==0){return-1;}//保存文件stringFileName=AfGbk::FromUnicode(FilePath);stringtext=AfGbk::FromUnicode(ui.plainTextEdit->toPlainText());//内容FILE*fp=fopen(FileName.c_str(),"wb");fwrite(text.c_str(),1,text.length(),fp);fclose(fp);//状态栏显示ui.statusBar->showMessage(AfGbk::ToUnicode("保存成功..."),3000);//状态显示3秒return0;}intTest10_1a_12_11::OnBtnOpen(){QStringFilePath=QFileDialog::getOpenFileName(this,AfGbk::ToUnicode("打开文件..."));if(FilePath.length()==0){return-1;}//读取文件内容stringFileNameStr=AfGbk::FromUnicode(FilePath);FILE*fp=fopen(FileNameStr.c_str(),"rb");charbuf[1024];intn=fread(buf,1,sizeof(buf),fp);buf[n]='\0';//显示到界面中QStringtext=AfGbk::ToUnicode(buf);ui.plainTextEdit->setPlainText(text);ui.plainTextEdit->setEnabled(true);return0;}

界面:

三、可停靠窗口 QDockWidget

在Qt中,可停靠窗口作为一种容器类型的控件

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。