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轴顺序排列.一个窗口部件 ...
随机推荐
- 力扣482(java)-密钥格式化(简单)
题目: 给定一个许可密钥字符串 s,仅由字母.数字字符和破折号组成.字符串由 n 个破折号分成 n + 1 组.你也会得到一个整数 k . 我们想要重新格式化字符串 s,使每一组包含 k 个字符,除了 ...
- 这是阿里技术专家对 SRE 和稳定性保障的理解
简介: 在技术工作中,对于产品/基础技术研发和 SRE 两种角色,通常会有基于「是否侧重编码」的理解.对于产品研发转做 SRE ,经常会产生是否要「脱离编码工作」的看法,或者认为是否要「偏离对产品/基 ...
- Serverless Kubernetes 落地实践
简介:如何通过原生 Kubernetes 提供 Serverless 能力?如何借力丰富的云原生社区生态?本文将给大家介绍一下我们在 Serverless Kubernetes 上的落地实践. 作者 ...
- 双11专刊|云原生数据仓库AnalyticDB支撑双11,大幅提升分析实时性和用户体验
简介:2021年双十一刚刚落幕,已连续多年稳定支持双十一大促的云原生数据仓库AnalyticDB,今年双十一期间仍然一如既往的稳定.除了稳定顺滑的基本盘之外,AnalyticDB还有什么亮点呢?下面我 ...
- 【详谈 Delta Lake 】系列技术专题 之 特性(Features)
简介: 本文翻译自大数据技术公司 Databricks 针对数据湖 Delta Lake 的系列技术文章.众所周知,Databricks 主导着开源大数据社区 Apache Spark.Delta L ...
- 习题8 #第8章 Verilog有限状态机设计-3 #Verilog #Quartus #modelsim
3. 编写一个8路彩灯控制程序,要求彩灯有以下3种演示花型. (1) 8路彩灯同时亮灭: (2) 从左至右逐个亮(每次只有1路亮): (3) 8路彩灯每次4路灯亮,4路灯灭,且亮灭相间,交替亮灭. 在 ...
- vue.js写悬浮广告效果
拿上一篇运行一下,感觉自己这个效果在边界处理的更好 <template> <div class="ad"> <p>vue广告悬浮</p&g ...
- 记录一个vue路由拦截效果的小技巧
使用一句三元表达式, <router-link class="flex-left left" tag="div" :to="loginState ...
- zabbix-server-pgsql docker镜像说明
0 说明 zabbix-server-pgsql在docker hub的官方说明,供查阅 1 Environment Variables 1.1 基本变量 When you start the zab ...
- 【GUI软件】小红书搜索结果批量采集,支持多个关键词同时抓取!
目录 一.背景介绍 1.1 爬取目标 1.2 演示视频 1.3 软件说明 二.代码讲解 2.1 爬虫采集模块 2.2 软件界面模块 2.3 日志模块 三.获取源码及软件 一.背景介绍 1.1 爬取目标 ...