【Qt】QMainWindow应用程序窗口类简单介绍
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应用程序窗口类简单介绍相关推荐
- 【Qt】控件——QPlainTextEdit使用简单介绍:常用方法及信号、逐行读取编辑框的内容、使用自带的快捷菜单、作为日志显示窗口
Qt控件-QPlainTextEdit使用 参考链接: https://blog.csdn.net/seniorwizard/article/details/109726147; https://bl ...
- QT Creator应用程序开发——01简单按钮显示
目录 前言 一.新建项目 二.设计ui页面和编写程序 (一)设计ui页面 1.设置按钮 2.设置标签 3.设置转到槽 (二)编写程序 (三)构建运行 (三)测试 结语 前言 本系列文章,是经博主的QT ...
- 在Qt中设置程序图标的方法介绍
本文主要介绍在 Qt 中设置程序图标的方法. 说明: 本文中的应用程序是面向 Windows 操作系统的: 本文中使用的 Qt Creator 版本号为:7.0.0: 本文中使用的 Qt 版本号为:5 ...
- Java里的字符串, String类简单介绍.
String类在java面试中也是1个常见的问题点. 所以也是写在这里方便以后查阅了. 大家都知道c语言里是没有String 字符串这个数据类型的. 只能用字符数组的1个特殊形式来表示一个字符串, 就 ...
- python打开excel窗口_简单介绍python在CMD界面读取excel所有数据
这篇文章主要介绍了python在CMD界面读取excel所有数据,帮助大家更好的利用python办公,感兴趣的朋友可以了解下 代码 import xlrd import os from prettyt ...
- android 事件类,30_Android MotionEvent 类简单介绍
在自定义 View 的过程中,如果设计到控件的触摸事件处理,我们就需要重写 onTouchEvent() 方法.在这个方法中最重要的一个类就是 MotionEvent类.下面会详细介绍一下这个类的各种 ...
- matlab之程序流程控制简单介绍
MATLAB中的程序流程控制语句有: 1.分支控制语句(if结构和switch结构) 2.循环控制语句(for循环.while循环.continue语句和break语句) 3.程序终止语句(retur ...
- 简单介绍使用 ssh 连接远程服务器运行图形界面程序
使用 SSH 远程连接运行图形界面程序 windwiny.20080310 简单介绍使用 ssh 连接远程服务器运行图形界面程序. 一.服务器安装运行SSH服务.在Ubuntu下: 安装 代码 ...
- 基于VTK与Qt的体绘制程序
基于VTK与Qt的体绘制程序 分类: VTK Qt Volume Rendering C&C++ 2013-06-10 09:17 3434人阅读 评论(13) 收藏 举报 目录(?)[+] ...
最新文章
- 阿里成立达摩院,引入10位顶尖科学家3年投入预计超1000亿,马云提出4条期待(附:学术咨询委员会成员名单)
- 分布式系统工程实现:GFSamp;Bigtable设计的优势,互联网营销
- 使用etcd+confd管理nginx配置
- 关于程序员能做什么副业,相关文章用机器学习算法分析
- php页面中文乱码分析,PHP页面中文乱码分析
- c语言源码转流程图工具_C语言学习路线 (详细)
- python都用什么写代码_python都用什么写代码
- 网络里有陌生计算机,怎样使用陌生电脑安全上网
- php ajax post请求数据变形,php-在AJAX调用中读取POST数据
- CDC不同模式在ODI体现系列之二 异步模式
- 一行.bat代码实现win+L锁定计算机立即锁屏
- linux 图形设计软件,Ubuntu下使用Blender 3D图形专业设计工具
- VSTest.Console.exe 的使用
- 关闭 Windows Defender
- 详解 物理学四大神兽————拉普拉斯兽
- 乡村的野蛮生长|独秀日记
- Unity Gamma Linear Color Space
- WebDAV之葫芦儿•派盘+RS文件管理器
- #医疗算法招聘:【医学影像AI公司-图像算法工程师】(招2人)
- html中怎么写虚线框的宽高,html如何设置虚线边框
热门文章
- MATLAB用hamming窗和blackman窗来设FIR滤波器
- Win7右下角网络图标异常解决方法
- 腾讯职级体系大改革!
- 直线的矢量方程之疑:一条直线到底由几个独立参数决定?
- ROS小乌龟走设定图形路线(键盘控制+Python代码实现)
- 初学Python,爬取王者荣耀英雄介绍及皮肤下载
- 登录拦截之后,登录页面出现在iframe的src里面
- (附源码)计算机毕业设计高校教务管理系统
- Java实现贪吃蛇大作战小游戏(完整教程+源码)额外实现积分和变速功能
- VS2022打开项目之后提示:找不到 .NETFramework,Version=v4.0 的引用程序集。要解决此问题,请为此框架版本安装开发人员工具包(SDK/目标包)或者重新定向应用程序。