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 }
View Code

运行、进行测试:

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

posted @ 2020-06-15 21:10  zhengcixi  阅读(631)  评论(0编辑  收藏  举报
回到顶部