一、工具栏和菜单

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

转载于:https://blog.51cto.com/zhweizhi/1881748

【Qt学习笔记】10.主窗口 The Main Window相关推荐

  1. QT学习笔记(摘抄)

    QT学习笔记-1.QT主要的对象 说来惭愧学习c++很长时间了一直没有使用c++开发过软件界面 所以现在想认认真真的学习一个c++图形界面框架库 本来想学习Xwidget但是这个资料不大好找 有啥问题 ...

  2. QT学习笔记(六):Qt5主窗口框架示例

    QT学习笔记(五):Qt5主窗口框架代码示例 一.添加编辑菜单:并在下拉菜单和工具栏中添加"打开文件"动作菜单 #include <QToolButton> #incl ...

  3. Qt 学习笔记(5)绘图 五子棋游戏

    在上一篇博客C++ Qt学习笔记(4)绘图中介绍了Qt中的绘图方法,基于上一篇的博客的知识,使用QPainter设计一个五子棋的棋盘,后续会完成五子棋的游戏设计. 1. 棋盘的设计 首先需要绘制棋盘的 ...

  4. Qt学习笔记之数据库

    一.数据库简介 1.1.数据和数据库(DB) 用计算机进行数据处理,首先就要把信息以数据形式存储到计算机中,故数据是可以被计算机接受和处理的符号.根据所表示的信息特征不同,数据有不同的类别,如数字.文 ...

  5. Qt学习笔记之 字符串类型小结

    1. Qt常用字符串类型 1.1 QString QString是Unicode编码的字符串,存储一系列16位的QChar,每一个QChar对应一个Unicode 4.0编码的字符,详见<Qt学 ...

  6. QT学习笔记(十四):QLayout的属性介绍

    QT学习笔记(十四):QLayout的属性介绍 主要包括QBoxLayout.和QGridLayout以及QFormLayout等的参数类似. 我主要说明一下QGridLayout在QtDesigne ...

  7. QT学习笔记(十):通用算法示例

    QT学习笔记(十):通用算法示例 std是C++标准库统一使用的命名空间(namespace)的名称,C++标准库中的名字全部都在std这个命名空间中,std也就是英文"standard&q ...

  8. QT学习笔记(八):顺序容器和关联容器

    QT学习笔记(八):顺序容器和关联容器 一.前言 二.容器介绍 2.1 顺序容器 2.2 关联容器 二.顺序容器示例 三.关联容器 一.前言 在Qt库中为我们提供了一系列的基于模板的容器类(conta ...

  9. QT学习笔记(五):Qt5的8种标准对话框示例

    QT学习笔记(五):Qt5的8种标准对话框示例 前言 实例展示 1.颜色对话框 2.文件对话框 3.字体对话框 4.输入对话框 5.消息对框 6.进度对话框 7.错误信息对话框 8.向导对话框. 前言 ...

  10. QT学习笔记之对话框

    QT学习笔记之对话框 对话框是一种用户界面(窗口),它的主要功能是输出信息和接收用户的输入.在每个对话框内一般都有一些控件,对话框依靠这些控件与用户进行交互. 1)       模式对话框:用户只能与 ...

最新文章

  1. P4factory ReadMe Quickstart 安装p4factory
  2. RDKit | RDKit(2019.09)新增相似性图函数
  3. wifi密码破解与攻击
  4. DDOS SYN Flood攻击、DNS Query Flood, CC攻击简介——ddos攻击打死给钱。限网吧、黄网、博彩,,,好熟悉的感觉有木有...
  5. matlab mod()rem()
  6. 【工具】jira + dingding 任务状态改变发送自定义消息
  7. Spring_JDBC连接
  8. fastjson jar包_Fastjsonlt;=1.2.47反序列化RCE漏洞(CNVD201922238)
  9. Linux下实现视频读取(二)---camera參数设定
  10. Sublime Text 3无法安装Package Control插件的解决
  11. Spring源码系列:BeanFactory的创建
  12. 【SRM-07 D】天才麻将少女KPM
  13. java考勤表导出_考勤表如何导出?
  14. java异步编程的面试_去年去阿里面试,被问到java 多线程,我是这样手撕面试官的...
  15. 苏大强患的“老年痴呆”,这家初创公司想提前15年检测
  16. 网页导出pdf不完整_又一种pdf文献全文一键免费翻译的方法
  17. icloud与mysql_ICloud 应用实例(一)
  18. 然并卵却很拉风!360超级充电器评测_天极网
  19. 用调整图层给照片上色
  20. Oracle table move tablespace

热门文章

  1. 反思设计——从大师身上反思
  2. java 小球运动轨迹_java怎么实现小球的运动轨迹
  3. 7-7 找出总分最高的学生 (15 分)
  4. HTML5 — 知识篇总结《II》【HTML5大力支持的语义化思想与规范】
  5. Android SwipeRefreshLayout 实现下拉刷新1
  6. Windows 安装JDK
  7. string的一些基本操作和骚操作
  8. MySQL中select * for update锁表的范围
  9. 洛谷 3959 宝藏——枚举+状压dp
  10. 什么是延展性(Malleability,可鍛性)