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 }
运行、进行测试:

主要是要对各个控件,以及其使用方法比较熟悉才行,我也是才学习,只是跟着视频进行学习,不熟悉的地方可以通过查看帮助文档进行学习。

浙公网安备 33010602011771号