Qt QMainWindow的使用
参考视频:黑马科技:https://www.bilibili.com/video/BV1XW411x7NU?p=19
QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget)。
本文主要介绍菜单栏、工具栏以及状态栏的使用。
创建工程时,选择MainWindow
以notepad++为例,我们需要实现菜单栏、工具栏、状态栏、核心控件,以及浮动窗口。
创建之后的工程文件如下:
其中,只有mainwindow.cpp我们需要改动,其它文件不需要改动它们。
mainwindow.cpp中实现的代码如下:


1 #include "mainwindow.h"
2 #include <QMenuBar>
3 #include <QMenu>
4 #include <QAction>
5 #include <QDebug>
6 #include <QToolBar>
7 #include <QPushButton>
8 #include <QStatusBar>
9 #include <QLabel>
10 #include <QTextEdit>
11 #include <QDockWidget>
12
13 MainWindow::MainWindow(QWidget *parent)
14 : QMainWindow(parent)
15 {
16 /* 1 添加菜单栏 */
17 QMenuBar *mBar = menuBar();
18 //添加菜单
19 QMenu *pFile = mBar->addMenu("文件");
20 //添加菜单项,添加动作
21 QAction *pnew = pFile->addAction("新建");
22 connect(pnew, &QAction::triggered,
23 [=]()
24 {
25 qDebug() << "新建被按下";
26 }
27 );
28 //添加分割线
29 pFile->addSeparator();
30 QAction *popen = pFile->addAction("打开");
31
32 /* 2 添加工具栏,菜单栏的快捷方式 */
33 QToolBar *toolBar = addToolBar("toolBar");
34 //工具栏添加快捷键
35 toolBar->addAction(pnew);
36 QPushButton *b = new QPushButton(this);
37 b->setText("按钮");
38 //添加小控件
39 toolBar->addWidget(b);
40 connect(b, &QPushButton::clicked,
41 [=]()
42 {
43 b->setText("唱歌");
44 }
45 );
46
47 /* 3 添加状态栏 */
48 QStatusBar *sbar = statusBar();
49 QLabel *label = new QLabel(this);
50 label->setText("normal text file");
51 //从左往右添加
52 sbar->addWidget(label);
53 sbar->addWidget(new QLabel("2", this));
54 //从右往左添加
55 sbar->addPermanentWidget(new QLabel("3", this));
56
57 /* 4 添加核心控件,文本编辑区 */
58 QTextEdit *textEdit = new QTextEdit(this);
59 setCentralWidget(textEdit);
60
61 /* 5 浮动窗口 */
62 QDockWidget *dock = new QDockWidget(this);
63 addDockWidget(Qt::RightDockWidgetArea, dock);
64 //给互动窗口添加控件
65 QTextEdit *textEdit1 = new QTextEdit(this);
66 dock->setWidget(textEdit1);
67 }
68
69 MainWindow::~MainWindow()
70 {
71
72 }
运行、进行测试:
主要是要对各个控件,以及其使用方法比较熟悉才行,我也是才学习,只是跟着视频进行学习,不熟悉的地方可以通过查看帮助文档进行学习。
Qt QMainWindow的使用的更多相关文章
- PyQt5 api 帮助文档
学习PyQt5的帮助文档是通过,使用help(PyQt5 class)的方式在console端输出帮助内容,常用的方法和属性查找起来不是很方便,现在放在网上以方便大家使用. QWidget Qt QM ...
- QT中QWidget、QDialog QMainWindow
继承关系:在Qt中所有的类都有一个共同的基类QObject ,QWidget直接继承与QPaintDevice类,QDialog.QMainWindow.QFrame直接继承QWidget 类. QW ...
- 【转】QT中QWidget、QDialog及QMainWindow的区别
QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己.每一个窗口部件都是矩形的,并且它们按Z轴顺序排列.一个窗口部件 ...
- 【Qt】QWidget、QDialog、QMainWindow的异同点【转】
简述 在分享所有基础知识之前,很有必要在这里介绍下常用的窗口-QWidget.QDialog.QMainWindow. 熟悉Qt的同学都应该知道,在新建Qt Widgets项目进行类信息选择时会碰到它 ...
- QT中QWidget、QDialog及QMainWindow的区别
本文转自http://www.cnblogs.com/aqxin/archive/2011/05/23/2054156.html QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基 ...
- [Qt初级] 解决 中QMainWindow和QDockWidget添加布局失败问题
初接触Qt,使用的教程是陆文周编写的<Qt5开发及实例>一书. 其中有关于QDockWidget.QStackedWidget这些类的介绍和使用实例. 要首先说明的是书上讲的非常的清楚,代 ...
- Qt实现基本QMainWindow主窗口程序
这个实验用Qt实现基本QMainWindow主窗口 先上实验效果图 打开一个文件,读取文件类容 详细步骤: 1.打开Qt creator新建MainWindow工程 右键工程名添加新文件,mai ...
- QT中QMainWindow、QWidget、QDialog
QT中QMainWindow.QWidget.QDialog 简述 在分享所有基础知识之前,很有必要在这里介绍下常用的窗口-QWidget.QDialog.QMainWindow. 熟悉Qt的同学都应 ...
- QT基础:QMainWindow学习小结
简述 普通的桌面应用程序有个共同的特性,有菜单栏.工具栏.状态栏.中央窗口等部件.菜单栏其实可以看成是一个窗口,菜单栏中的每一个菜单也可以看成一个窗口,每个部件基本都可以认为是一个窗口.那么这些典型的 ...
- qt——QT中QWidget、QDialog及QMainWindow的区别
QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己.每一个窗口部件都是矩形的,并且它们按Z轴顺序排列.一个窗口部件 ...
随机推荐
- PolarDB-X 全局Binlog解读之性能篇(上)
简介: 本篇来介绍一下PolarDB-X全局binlog在性能方面的一些设计和思考,先通过几个实际的测试案例来展示全局binlog的性能情况,然后结合这些案例来深入讲解全局binlog关于优化的故事. ...
- 无缝衔接 gRPC 与 dubbo-go
最近我们 dubbo-go 社区里面,呼声很大的一个 feature 就是对 gRPC 的支持.在某位大佬的不懈努力之下,终于弄出来了. 今天我就给大家分析一下大佬是怎么连接 dubbo-go 和 g ...
- Apsara Stack 技术百科 | 如何「场景化」的企业上云
简介: 企业上云离不开数据和业务上云,如何在确保安全的前提下,低成本高效率的平滑上云,在云上又能真正解决哪些实际业务问题?混合云君今天给大家讲讲最经典的三个场景~ 随着"十四五"规 ...
- 阿里云云效发布研发协同工具,以新的产研协同工作方式助力实现BizDevOps
简介:2021云栖大会云效BizDevOps分论坛上,阿里云云效技术负责人陈鑫发布阿里云云效产品研发协同工具支撑ALPD理论,以新的产研协同工作方式助力实现BizDevOps. 编者按:10月21日 ...
- WPF 给类库设置设计时使用的资源字典
在开发 WPF 类库时,由于类库里面没有存在 App.xaml.cs 文件,而在对单个 XAML 进行开发时,设计器将会因为找不到资源文件的存在,而拿不到资源.本文告诉大家简单的方法,给设计器设置仅在 ...
- linux应用程序开发入门
在上一篇文章中学习了linux字符驱动的开发,需要使用应用程序对完成的驱动进行验证,现在开始学习应用程序的开发. 一.准备材料 开发环境:VMware 操作系统:ubuntu 开发版:湃兔i2S-6U ...
- 批量解压上传SAP Note
最近在做印度GST相关的东西,需要手动给系统实施上百个SAP Note,十分繁琐. 标准事务代码SNOTE只支持每次上传一个Note,逐个上传大量Note会很麻烦,为此摸索出一个批量解压上传的流程,下 ...
- .Net 8.0 下的新RPC,IceRPC之使用Dev Containers进行 .NET QUIC 精简开发
作者引言 很高兴啊,我们来到了IceRPC之使用Dev Containers进行 .NET QUIC 精简开发,主要是一篇指引,如何使用开发容器做为开发环境,进行开发IceRPC,可适用于任务应用的开 ...
- Pytorch入门—Tensors张量的学习
Tensors张量的学习 张量是一种特殊的数据结构,与数组和矩阵非常相似.在PyTorch中,我们使用张量来编码模型的输入和输出,以及模型的参数. 张量类似于NumPy的ndarrays,只是张量可以 ...
- jquery中.html(),.text()和.val()的差异总结
.html(),.text(),.val()三种方法都是用来读取选定元素的内容: .html()是用来读取元素的html内容(包括html标签): .text()用来读取元素的纯文本内容,包括其后代元 ...