参考视频:黑马科技: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. mmdetection训练voc数据集

    首先需要准备好数据集,这里有xml标签数据转voc数据集格式的说明以及免费分享的数据集:xml转voc数据集 - 一届书生 - 博客园 (cnblogs.com) 1. 准备工作目录 我们的工作目录, ...

  2. Serverless 在阿里云函数计算中的实践

    简介: 近日,阿里云 aPaaS&Serverless 前端技术专家袁坤在 CSDN 云原生 meetup 长沙站分享了 Serverless 在阿里云函数计算 FC 的实践. 作者:CSDN ...

  3. 龙蜥社区开源 coolbpf,BPF 程序开发效率提升百倍 | 龙蜥技术

    简介: coolbpf,可以酷玩的BPF!来看看让BPF加了双翅膀的它究竟有多硬核? 文/系统运维 SIG(Special Interest Group) 引言 BPF 是一个新的动态跟踪技术,目前这 ...

  4. Serverless 选型:深度解读 Serverless 架构及平台选择

    作者 | 悟鹏  阿里巴巴技术专家 导读:本文尝试以日常开发流程为起点,分析开发者在每个阶段要面对的问题,然后组合解决方案,提炼面向 Serverless 的开发模型,并与业界提出的 Serverle ...

  5. Java 定时任务技术趋势

    ​简介:定时任务是每个业务常见的需求,比如每分钟扫描超时支付的订单,每小时清理一次数据库历史数据,每天统计前一天的数据并生成报表等等. 作者:黄晓萌(学仁) Java 中自带的解决方案 使用 Time ...

  6. 如何快速开发 Serverless Devs Package ?

    ​简介:目前,开发者开发 Serverless Package 的流程相对来说是比较简单的.因为在 Serverless Devs 开发者工具中,已经提供了相对完整的脚手架能力,一文了解详情~ ​ 作 ...

  7. Dubbo3.0|阿里巴巴服务框架三位一体的选择与实践

    ​简介: 服务框架就像铁路的铁轨一样,是互通的基础,只有解决了服务框架的互通,才有可能完成更高层的业务互通,所以用相同的标准统一,合二为一并共建新一代的服务框架是必然趋势.Dubbo3.0 是 Dub ...

  8. 技术干货|基于Apache Hudi 的CDC数据入湖「内附干货PPT下载渠道」

    ​简介: 阿里云技术专家李少锋(风泽)在Apache Hudi 与 Apache Pulsar 联合 Meetup 杭州站上的演讲整理稿件,本议题将介绍典型 CDC 入湖场景,以及如何使用 Pulsa ...

  9. [GPT] gradio-chatbot 原理及代码解析

      GradioChatBot 是一个基于 Gradio 的聊天机器人,它可以与不同的 URL 进行对话.其原理是通过将用户输入的文本发送到指定的 URL,然后接收并解析 URL 返回的响应,然后将响 ...

  10. 10.prometheus监控--监控进程process

    一.进程监控 如果想要对主机的进程进行监控,例如chronyd,sshd等服务进程以及自定义脚本程序运行状态监控.我们使用node exporter就不能实现需求了,此时就需要使用process ex ...