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. 阿里成立达摩院,引入10位顶尖科学家3年投入预计超1000亿,马云提出4条期待(附:学术咨询委员会成员名单)
  2. 分布式系统工程实现:GFSamp;Bigtable设计的优势,互联网营销
  3. 使用etcd+confd管理nginx配置
  4. 关于程序员能做什么副业,相关文章用机器学习算法分析
  5. php页面中文乱码分析,PHP页面中文乱码分析
  6. c语言源码转流程图工具_C语言学习路线 (详细)
  7. python都用什么写代码_python都用什么写代码
  8. 网络里有陌生计算机,怎样使用陌生电脑安全上网
  9. php ajax post请求数据变形,php-在AJAX调用中读取POST数据
  10. CDC不同模式在ODI体现系列之二 异步模式
  11. 一行.bat代码实现win+L锁定计算机立即锁屏
  12. linux 图形设计软件,Ubuntu下使用Blender 3D图形专业设计工具
  13. VSTest.Console.exe 的使用
  14. 关闭 Windows Defender
  15. 详解 物理学四大神兽————拉普拉斯兽
  16. 乡村的野蛮生长|独秀日记
  17. Unity Gamma Linear Color Space
  18. WebDAV之葫芦儿•派盘+RS文件管理器
  19. #医疗算法招聘:【医学影像AI公司-图像算法工程师】(招2人)
  20. html中怎么写虚线框的宽高,html如何设置虚线边框

热门文章

  1. MATLAB用hamming窗和blackman窗来设FIR滤波器
  2. Win7右下角网络图标异常解决方法
  3. 腾讯职级体系大改革!
  4. 直线的矢量方程之疑:一条直线到底由几个独立参数决定?
  5. ROS小乌龟走设定图形路线(键盘控制+Python代码实现)
  6. 初学Python,爬取王者荣耀英雄介绍及皮肤下载
  7. 登录拦截之后,登录页面出现在iframe的src里面
  8. (附源码)计算机毕业设计高校教务管理系统
  9. Java实现贪吃蛇大作战小游戏(完整教程+源码)额外实现积分和变速功能
  10. VS2022打开项目之后提示:找不到 .NETFramework,Version=v4.0 的引用程序集。要解决此问题,请为此框架版本安装开发人员工具包(SDK/目标包)或者重新定向应用程序。