QMainWindow介绍

QMainWindow是一个为用户提供主窗口程序的类,是许多应用程序的基础,包含的组件有:

  • 菜单栏QMenuBar,一个主窗口最多只能有一个菜单栏;包含一个下拉菜单项的列表,这些菜单项由QAction动作类实现,位于主窗口的顶部。

    •     QMenuBar *menubar = menuBar();  // 创建一个菜单栏,主窗口最多只能有一个菜单栏// 创建菜单 FileQMenu *fileMenu = menubar->addMenu(tr("&File"));// 创建菜单项QAction *newAction = fileMenu->addAction(tr("&New"));fileMenu->addSeparator();  // 添加分隔线// 将菜单栏放入窗口中setMenuBar(menubar);
      
  • 工具栏QToolBar,一个主窗口可以有多个工具栏;工具栏一般用于显示一些常用的菜单项目,也可以插入其它窗口部件,可以移动。

    •     // 创建工具栏QToolBar *toolbar = new QToolBar(this);// 设置只允许左右停靠
      //    toolbar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);// 设置浮动操作toolbar->setFloatable(false);// 设置移动,如果设置为false表示工具栏不会再移动,是固定的
      //    toolbar->setMovable(false);//addToolBar(toolbar);  // 工具栏放入窗口中addToolBar(Qt::ToolBarArea::TopToolBarArea,toolbar);  // 设置工具栏在窗口的左侧// 在工具栏中添加动作toolbar->addAction(newAction);toolbar->addSeparator();// 工具栏中添加控件QPushButton *button = new QPushButton(tr("aaa"),this);toolbar->addWidget(button);
      
  • 中心部件Central Widget,一个主窗口只能有一个中心部件;在主窗口的中心区域可以放入一个窗口部件作为中心部件,是应用程序的主要功能实现区域。

    •     // 设置中心部件QTextEdit *textEdit = new QTextEdit(this);setCentralWidget(textEdit);  // 设置中心部件到窗口中
      
  • 锚接部件QDockWidget,一个主窗口可以有多个Dock部件;也被称为停靠窗口,可以停靠在中心部件的四周,用来防止一些部件实现一些功能,类似工具箱。

    •     QDockWidget *dockWidget = new QDockWidget(tr("Dock部件"),this);  // 创建dock控件addDockWidget(Qt::DockWidgetArea::BottomDockWidgetArea,dockWidget);  // dock控件放到窗口中// 设置停靠区域dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
      
  • 状态栏QStatusBar,一个主窗口只能有一个状态栏;用于显示程序的一些状态信息,在主窗口的最底部。

    •     // 创建状态栏QStatusBar *statusbar = statusBar();// 设置到窗口中setStatusBar(statusbar);// 放置QLabel控件到状态栏QLabel *label = new QLabel(tr("Ready1"),this);statusbar->addWidget(label);// 放置控件到右侧QLabel *label2 = new QLabel(tr("Ready2"),this);statusbar->addPermanentWidget(label2);  // 状态栏信息放到右侧
      

代码实现创建窗口的各个部件:

void MainWindow::createMenu()
{QMenuBar *menubar = menuBar();  // 创建一个菜单栏,主窗口最多只能有一个菜单栏// 创建菜单 FileQMenu *fileMenu = menubar->addMenu(tr("&File"));// 创建菜单项QAction *newAction = fileMenu->addAction(tr("&New"));QAction *openAction =fileMenu->addAction(tr("&Open"));fileMenu->addSeparator();  // 添加分隔线QAction *saveAction =fileMenu->addAction(tr("&Save"));QAction *saveAsAction =fileMenu->addAction(tr("Save &As"));fileMenu->addSeparator();  // 添加分隔线QAction *exitAction =fileMenu->addAction(tr("&Exit"));connect(exitAction,&QAction::triggered,this,&MainWindow::close);// 创建菜单 EditQMenu *editMenu = menubar->addMenu(tr("Edit"));// 创建菜单 AboutQMenu *aboutMenu = menubar->addMenu(tr("About"));// 将菜单栏放入窗口中setMenuBar(menubar);// 创建工具栏QToolBar *toolbar = new QToolBar(this);// 设置只允许左右停靠toolbar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);// 设置浮动操作toolbar->setFloatable(false);// 设置移动,如果设置为false表示工具栏不会再移动,是固定的
//    toolbar->setMovable(false);//addToolBar(toolbar);  // 工具栏放入窗口中addToolBar(Qt::ToolBarArea::LeftToolBarArea,toolbar);  // 设置工具栏在窗口的左侧// 在工具栏中添加动作toolbar->addAction(newAction);toolbar->addAction(openAction);// 工具栏中添加控件QPushButton *button = new QPushButton(tr("aaa"),this);toolbar->addWidget(button);
}void MainWindow::createStatusBar()
{// 创建状态栏QStatusBar *statusbar = statusBar();// 设置到窗口中setStatusBar(statusbar);// 放置QLabel控件到状态栏QLabel *label = new QLabel(tr("Ready1"),this);statusbar->addWidget(label);// 放置控件到右侧QLabel *label2 = new QLabel(tr("Ready2"),this);statusbar->addPermanentWidget(label2);  // 状态栏信息放到右侧}void MainWindow::createDockWidget()
{QDockWidget *dockWidget = new QDockWidget(tr("Dock部件"),this);  // 创建dock控件addDockWidget(Qt::DockWidgetArea::BottomDockWidgetArea,dockWidget);  // dock控件放到窗口中// 设置停靠区域dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);}void MainWindow::createCentralWidget()
{// 设置中心部件QTextEdit *textEdit = new QTextEdit(this);setCentralWidget(textEdit);  // 设置中心部件到窗口中
}

将部件设置到窗口中的函数一个容易记的方法,只能有一个的部件是set开头的,可以有多个的部件是add开头的。

【Qt】QMainWindow应用程序窗口类简单介绍相关推荐

  1. 【Qt】控件——QPlainTextEdit使用简单介绍:常用方法及信号、逐行读取编辑框的内容、使用自带的快捷菜单、作为日志显示窗口

    Qt控件-QPlainTextEdit使用 参考链接: https://blog.csdn.net/seniorwizard/article/details/109726147; https://bl ...

  2. QT Creator应用程序开发——01简单按钮显示

    目录 前言 一.新建项目 二.设计ui页面和编写程序 (一)设计ui页面 1.设置按钮 2.设置标签 3.设置转到槽 (二)编写程序 (三)构建运行 (三)测试 结语 前言 本系列文章,是经博主的QT ...

  3. 在Qt中设置程序图标的方法介绍

    本文主要介绍在 Qt 中设置程序图标的方法. 说明: 本文中的应用程序是面向 Windows 操作系统的: 本文中使用的 Qt Creator 版本号为:7.0.0: 本文中使用的 Qt 版本号为:5 ...

  4. Java里的字符串, String类简单介绍.

    String类在java面试中也是1个常见的问题点. 所以也是写在这里方便以后查阅了. 大家都知道c语言里是没有String 字符串这个数据类型的. 只能用字符数组的1个特殊形式来表示一个字符串, 就 ...

  5. python打开excel窗口_简单介绍python在CMD界面读取excel所有数据

    这篇文章主要介绍了python在CMD界面读取excel所有数据,帮助大家更好的利用python办公,感兴趣的朋友可以了解下 代码 import xlrd import os from prettyt ...

  6. android 事件类,30_Android MotionEvent 类简单介绍

    在自定义 View 的过程中,如果设计到控件的触摸事件处理,我们就需要重写 onTouchEvent() 方法.在这个方法中最重要的一个类就是 MotionEvent类.下面会详细介绍一下这个类的各种 ...

  7. matlab之程序流程控制简单介绍

    MATLAB中的程序流程控制语句有: 1.分支控制语句(if结构和switch结构) 2.循环控制语句(for循环.while循环.continue语句和break语句) 3.程序终止语句(retur ...

  8. 简单介绍使用 ssh 连接远程服务器运行图形界面程序

    使用 SSH 远程连接运行图形界面程序  windwiny.20080310  简单介绍使用 ssh 连接远程服务器运行图形界面程序.  一.服务器安装运行SSH服务.在Ubuntu下:  安装 代码 ...

  9. 基于VTK与Qt的体绘制程序

    基于VTK与Qt的体绘制程序 分类: VTK Qt Volume Rendering C&C++ 2013-06-10 09:17 3434人阅读 评论(13) 收藏 举报 目录(?)[+] ...

最新文章

  1. adb logcat 抓取日志_手机抓取崩溃的log日志(安卓/ios)
  2. springboot自定义配置文件
  3. mysql数据库事务_MySQL数据库的事务管理
  4. 正则表达式 特殊符号系列 通配符系列
  5. Java 11:JOIN表,获取Java流
  6. 不可逆加密算法有哪些_对称加密算法和非对称加密算法
  7. OpenCV threshold 二值化
  8. hive表指定分区字段搜索_hive导出分区表到mysql 分区字段值怎么取
  9. VFP DownFileX下载异常问题
  10. IBM X3850 X5 PCI故障实例
  11. 计算机键盘中英文,电脑键盘中英文切换键
  12. css 剪辑图片_[译]用CSS剪切圆形图片
  13. 百度地图infowindow上添加自定义点击事件
  14. 半年营收200亿,翻台率却降到3次/天,老板娘出逃海底捞怎么了?
  15. 流浪地球2真实成本多少?怎么参与?找谁参与?安全可靠吗?
  16. unity+google cardboard
  17. 北京 买房 提取 公积金
  18. 模式识别的概念、方法及应用
  19. shell 脚本实现 k8s 集群环境下指定 ns 资源的 yaml 文件备份
  20. 多项式曲线——搞清楚贝塞尔曲线、B样条曲线、Nurbs曲线的区别

热门文章

  1. 明代文学类毕业论文文献都有哪些?
  2. 【C语言】文学研究助手
  3. python+untitest+request实现接口自动化测试
  4. M401a armbian下安装cups共享打印机
  5. 2021-2022学年广州市广大附中九年级第二学期开学考试英语试题
  6. 如何用Spark进行数据分析
  7. 漩涡中的中国首富李彦宏
  8. 爬虫百战(四)——爬取yy短视频
  9. [野狐行][2016/04/11][群直播系列2][那些年让我们郁闷不已的游戏保护]
  10. OSG智能指针:osg::ref_ptr