参考视频:黑马科技: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 }
运行、进行测试:
主要是要对各个控件,以及其使用方法比较熟悉才行,我也是才学习,只是跟着视频进行学习,不熟悉的地方可以通过查看帮助文档进行学习。