参考视频:黑马科技: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的使用的更多相关文章

  1. PyQt5 api 帮助文档

    学习PyQt5的帮助文档是通过,使用help(PyQt5 class)的方式在console端输出帮助内容,常用的方法和属性查找起来不是很方便,现在放在网上以方便大家使用. QWidget Qt QM ...

  2. QT中QWidget、QDialog QMainWindow

    继承关系:在Qt中所有的类都有一个共同的基类QObject ,QWidget直接继承与QPaintDevice类,QDialog.QMainWindow.QFrame直接继承QWidget 类. QW ...

  3. 【转】QT中QWidget、QDialog及QMainWindow的区别

    QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己.每一个窗口部件都是矩形的,并且它们按Z轴顺序排列.一个窗口部件 ...

  4. 【Qt】QWidget、QDialog、QMainWindow的异同点【转】

    简述 在分享所有基础知识之前,很有必要在这里介绍下常用的窗口-QWidget.QDialog.QMainWindow. 熟悉Qt的同学都应该知道,在新建Qt Widgets项目进行类信息选择时会碰到它 ...

  5. QT中QWidget、QDialog及QMainWindow的区别

    本文转自http://www.cnblogs.com/aqxin/archive/2011/05/23/2054156.html QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基 ...

  6. [Qt初级] 解决 中QMainWindow和QDockWidget添加布局失败问题

    初接触Qt,使用的教程是陆文周编写的<Qt5开发及实例>一书. 其中有关于QDockWidget.QStackedWidget这些类的介绍和使用实例. 要首先说明的是书上讲的非常的清楚,代 ...

  7. Qt实现基本QMainWindow主窗口程序

    这个实验用Qt实现基本QMainWindow主窗口 先上实验效果图    打开一个文件,读取文件类容 详细步骤: 1.打开Qt creator新建MainWindow工程 右键工程名添加新文件,mai ...

  8. QT中QMainWindow、QWidget、QDialog

    QT中QMainWindow.QWidget.QDialog 简述 在分享所有基础知识之前,很有必要在这里介绍下常用的窗口-QWidget.QDialog.QMainWindow. 熟悉Qt的同学都应 ...

  9. QT基础:QMainWindow学习小结

    简述 普通的桌面应用程序有个共同的特性,有菜单栏.工具栏.状态栏.中央窗口等部件.菜单栏其实可以看成是一个窗口,菜单栏中的每一个菜单也可以看成一个窗口,每个部件基本都可以认为是一个窗口.那么这些典型的 ...

  10. qt——QT中QWidget、QDialog及QMainWindow的区别

    QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己.每一个窗口部件都是矩形的,并且它们按Z轴顺序排列.一个窗口部件 ...

随机推荐

  1. 在windows电脑中安装redis

    1,github下载地址:https://github.com/MSOpenTech/redis/tags 2,下载完成后,解压到对应文件夹 3,打开redis.windows.conf,在#requ ...

  2. 使用input标签的时候报错,提示Form elements must have labels: Element has no title attribute Element has no placeholder attribute

    使用input标签的时候报错,提示Form elements must have labels: Element has no title attribute Element has no place ...

  3. 使用Docker搭建MongoDB 5.0版本副本集集群

    1.mongodb集群 首先我们需要了解mongodb的集群模式,mongodb安装分为单机安装和集群安装.集群安装分为:主从复制(Master-Slaver)集群.副本集(Replica Set)集 ...

  4. 力扣184(MySQL)-部门工资最高的员工(中等)

    题目: 表: Employee 表: Department 编写SQL查询以查找每个部门中薪资最高的员工.按 任意顺序 返回结果表.查询结果格式如下例所示.  解题思路: 方法一:窗口函数和多表联结 ...

  5. 揭秘 RocketMQ 新特性以及在金融场景下的实践

    2019 年末, RocketMQ 正式发布了 4.6.0 版本,增加了" Request-Reply "的同步调用的新特性." Request-Reply " ...

  6. 深度解密|基于 eBPF 的 Kubernetes 问题排查全景图发布

    ​简介:通过 eBPF 无侵入地采集多语言.多网络协议的黄金指标/网络指标/Trace,通过关联 Kubernetes 对象.应用.云服务等各种上下文,同时在需要进一步下钻的时候提供专业化的监测工具( ...

  7. 阿里的 RocketMQ 如何让双十一峰值之下 0 故障?

    简介: 2020 年双十一交易峰值达到 58.3 W 笔/秒,消息中间件 RocketMQ 继续数年 0 故障丝般顺滑地完美支持了整个集团大促的各类业务平稳. 作者 | 愈安来源 | 阿里巴巴云原生公 ...

  8. “2021ISIG中国产业智能大会低代码峰会”即将开幕,钉钉宜搭叶周全受邀出席

    ​简介:2021年12月8-9日,"2021ISIG中国产业智能大会" 将在上海举行.阿里巴巴资深技术专家,钉钉宜搭创始人叶周全将作为特邀嘉宾出席大会. 2021年12月8-9日, ...

  9. [Cloud] From Borg to Kubernetes

    Borg System Architect: Kubernetes System Architect: Link:https://www.cnblogs.com/farwish/p/12751861. ...

  10. 【简说Python WEB】Bootstrap

    目录 [简说Python WEB]Bootstrap Bootstrap的导航组件应用 404,500错误页面定制化 系统环境:Ubuntu 18.04.1 LTS Python使用的是虚拟环境:vi ...