一、工具栏和菜单
只有主框架窗口(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中,可停靠窗口作为一种容器类型的控件