一、工具栏和菜单
只有主框架窗口 (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())));
- }
- int Test10_1a_12_11: :OnHelpButton() {
- return 0;
- }
接下来实现一个简单的应用。
二、单文档程序
单文档程序 (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())));
- }
- int Test10_1a_12_11: :OnBtnNew() {
- ui.plainTextEdit - >setEnabled(true);
- return 0;
- }
- int Test10_1a_12_11: :OnBtnSave() {
- QString FilePath = QFileDialog: :getSaveFileName(this, AfGbk: :ToUnicode("保存在..."));
- if (FilePath.length() == 0) {
- return - 1;
- }
- //保存文件
- string FileName = AfGbk: :FromUnicode(FilePath);
- string text = 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秒
- return 0;
- }
- int Test10_1a_12_11: :OnBtnOpen() {
- QString FilePath = QFileDialog: :getOpenFileName(this, AfGbk: :ToUnicode("打开文件..."));
- if (FilePath.length() == 0) {
- return - 1;
- }
- //读取文件内容
- string FileNameStr = AfGbk: :FromUnicode(FilePath);
- FILE * fp = fopen(FileNameStr.c_str(), "rb");
- char buf[1024];
- int n = fread(buf, 1, sizeof(buf), fp);
- buf[n] = '\0';
- //显示到界面中
- QString text = AfGbk: :ToUnicode(buf);
- ui.plainTextEdit - >setPlainText(text);
- ui.plainTextEdit - >setEnabled(true);
- return 0;
- }
界面:
三、可停靠窗口 QDockWidget
在 Qt 中,可停靠窗口作为一种容器类型的控件
来源: http://www.bubuko.com/infodetail-1868556.html