文章目录

  • 1. 简介
  • 2. 构造函数
  • 3. 布局
  • 4. 成员函数
  • 5. 代码示例

1. 简介

QMainWindow类用于主窗口管理,窗口可包含菜单栏、工具栏中心窗口和状态栏等。

pro文件 QT+=widgets

头文件 #include<QMainWindow>

继承自QWidget

  • QWidget:是所有用户界面对象的基类
  • QMainWindow:包含菜单栏、工具栏、中心窗口和状态栏的主窗口

2. 构造函数

QMainWindow::QMainWindow(QWidget *parent = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags()
)

参数:

parent:如果是 nullptr,则小部件将成为一个主窗口,否则小部件将成为 parent内的子窗口删除其父窗口时,将删除他的小部件。

f:由任何窗口标志的按位“或”组成的值。QMainWindow设置标志Qt::Window,因此将始终作为顶级触窗口小部件创建。

3. 布局

QMainWindow拥有自己的布局,您可以添加菜单条 QMenuBar状态条 QStatusBar、工具条QToolBar、停靠条QDockWidget,中心区域可以放任意的控件,比如按钮,编辑框等。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-62l8DXYK-1620220941388)(C:\Users\tangx\AppData\Roaming\Typora\typora-user-images\image-20210505211358156.png)]

4. 成员函数

成员函数 用法
setMenuBar 设置菜单条
addToolBar 添加工具条
addDockWidget 添加停靠窗口
setStatusBar 设置状态条
setCentralWidget 设置中心区域窗口
createPopupMenu 创建弹出菜单
splitDockWidget 将停靠区域分割为两块并放置两个停靠区
setTabPosition 设置给定的停靠小部件区域的标签位置

5. 代码示例

#include <QApplication>
#include <QMainWindow>
#include <QDebug>
#include <QMenuBar>
#include <QToolBar>
#include <QStatusBar>
#include <QLabel>
#include <QDockWidget>int main(int argc, char *argv[])
{QApplication a(argc, argv);QMainWindow  w;//调整客户区的大小w.resize(800,500);//设置整个窗口的背景色QPalette pal=w.palette();pal.setColor(QPalette::Background, Qt::red);w.setPalette(pal);//设置菜单条(一个)QMenuBar menuBar(&w);menuBar.addMenu("菜单1");w.setMenuBar(&menuBar);//添加工具条(多个)QToolBar  toolBar(&w);toolBar.setStyleSheet("background-color:#FFFF00");w.addToolBar(&toolBar);//设置状态条(一个)QStatusBar statusBar(&w);statusBar.addWidget(new  QLabel("这是状态栏"));statusBar.setStyleSheet("background-color:#FF00FF");w.setStatusBar(&statusBar);//停靠条QDockWidget dock("Dock1",&w);dock.setStyleSheet("background-color:#00FFFF");//设置停靠区背景色dock.setWidget(new QWidget());//设置停靠区的窗口dock.setFixedSize(200,300);//设置停靠区大小//设置可以移动,可关闭停靠区dock.setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable);//设置可以左右停靠区dock.setAllowedAreas(Qt::AllDockWidgetAreas);//添加停靠条(多个)w.addDockWidget(Qt::RightDockWidgetArea,&dock);//设置centralWidget的背景色QWidget  centralWidget(&w);//使用样式表来设定外观centralWidget.setStyleSheet("background-color:#00FF00");//设置中心区域窗口w.setCentralWidget(&centralWidget);//显示主窗口w.show();return a.exec();
}

运行效果:

Qt主窗囗类QMainwindow学习相关推荐

  1. python PyQt5 QMainWindow类(Qt主窗口框架,主窗口提供了用于构建应用程序用户界面的框架)

    https://doc.qt.io/qtforpython/PySide2/QtWidgets/QMainWindow.html?highlight=qmainwindow#PySide2.QtWid ...

  2. Qt扫盲-QDir类的学习和使用

    Qt5的QDir类的学习 文章目录 Qt5的QDir类的学习 概述: 相对路径与绝对路径 相对性判断 存在性判断 相对路径转绝对路径 导航和路径操作 获取和设置QDir的值 切换路径 新建删除重命名文 ...

  3. linux 界面工具 qt,Qt主窗口中的工具栏

    工具栏类 QToolBar 快捷项 QAcitonQToolBar* tb = addToolBar("Tool Bar");//addToolBar是Qt主窗口的成员函数,在主窗 ...

  4. QT 009 QSqlDatabase 数据库类的使用

    前言:本文对QT的构建数据库连接类的帮助文件做了一点小结,可以看作是翻译吧: Qt 5.9 Qt SQL C++ Classes QSqlDatabase Qt 5.9.0 Reference Doc ...

  5. Qt使用第三方串口类qextserialport无法打开串口的可能解决方案(文章中描述的可以解决)

    我前面的博客提到了,在我的笔记本电脑中用QT的第三方串口类QextSerilPort打不开串口,今天终于解决了,下面简单分享一下: 先说下环境:我用的是QT4.8.0,每三方的串口类QextSeria ...

  6. C++类基础学习(1)

    类基础学习(C++) 题录:作者是个博客小萌新,C++已学习了一段时间,做过几个小项目(VS+qt的),但都很简单,在深入学习时,发现但个人缺少系统的总结以及整体知识框架的构建,所以准备通过CSDN这 ...

  7. Qt中使用QUdpSocket类实现UDP通信

    UDP 通信介绍 UDP(User Datagram Protocol,用户数据报协议) UDP是一个轻量级.不可靠.面向数据报的.无连接的传输层协议,多用于可靠性要求不严格,不是非常重要的传输,如直 ...

  8. String类的学习

    String类的学习: String a="a"+"b"+"1"; String b="ab1"; a==b是对的,为什 ...

  9. TS基础2(类)-学习笔记

    文章目录 TS基础2(类)-学习笔记 class类 类的继承 修饰符 类的类型.实现接口 TS基础2(类)-学习笔记 class类 //类 class//首字母大写//类(Class):定义了一件事物 ...

最新文章

  1. Apache的Commons Lang和BeanUtils
  2. 【题解】洛谷P1541 [NOIP2010TG] 乌龟棋(类似背包的DP)
  3. javaweb连接不上mysql怎么办_java web应用连接mysql会突然connection连接失败
  4. linux 网络dma驱动,S3C2410的Linux下DMA驱动程序开发
  5. qq代理服务器哪里获取_哪里可以下载小学英语课件?这3个渠道,英语老师得赶快收藏...
  6. origin使用指导。pdf_获取所有的最高法指导性案例并保存为pdf
  7. Linux怎么查看编译ARM平台程序的编译器arm-linux-gcc
  8. java环境问题_1_JAVA语言的特点及配置环境问题
  9. Python 操作谷歌浏览器
  10. stm32 系统进入stop模式_STM32开发笔记78: 2种STOP模式的唤醒方法
  11. 蛋白质二级结构预测-Chou-Fasman预测方法
  12. sails mysql_Sails+MVC+Mysql+Node+学习笔记一
  13. PMBOK第六版工具与技术:数据收集数据分析数据表现
  14. 收不到验证码怎么办?
  15. 'CALayer position contains NaN: [nan nan]'异常
  16. LibcSearcher找不到合适的libc(更新到python3版本Libc)
  17. 打出一个e^x的图像
  18. Mac Pro 软件收藏
  19. 用 leangoo进行自我账目管理
  20. 【附源码】计算机毕业设计JAVA教学质量评价系统

热门文章

  1. 高校人员信息管理系统(Python版)
  2. char ch= 中 什么意思java_在 Java 语言中定义了如下变量: char ch; 下列赋值语句正确的是_韩语初下答案_学小易找答案...
  3. matlab画图——地图背景
  4. Java多人视频通信(不定时更新)
  5. springboot请求注解的使用Get/Post
  6. 2019 春季实习生招聘之项目介绍
  7. 西北工业大学NOJ-Python程序设计作业81-90
  8. 一分钟了解大数据的价值
  9. 如何在Java中将GIF图像转换为PNG等图像格式?试试Aspose
  10. Revit二次开发—获取并修改指定标高