首先先创建QMainwindow文件

以下代码全在MainWindow.cpp下
1. 创建菜单栏
cpp
//创建菜单栏
QMenuBar *menu = menuBar();
//创建菜单
QMenu *fileMenu = menu->addMenu("文件");
QMenu *editMenu = menu->addMenu("编辑");
//创建文件中菜单项
QAction *createPro = fileMenu->addAction("新建项目");
fileMenu->addSeparator(); //加分割线
QAction *openPro = fileMenu->addAction("打开项目");
2. 创建工具栏
cpp
//工具栏
QToolBar *toolbar = new QToolBar(this);
//工具栏靠左侧
addToolBar(Qt::LeftToolBarArea, toolbar);
//添加快捷键
toolbar->addAction(createPro);
toolbar->addAction(openPro);
3. 创建状态栏
cpp
//状态栏创建
QStatusBar *statusBar = new QStatusBar(this);
setStatusBar(statusBar);
//放标签
QLabel *label = new QLabel("状态栏");
//标签放入状态栏左侧
statusBar->addWidget(label);
QLabel *label2 = new QLabel("右侧状态栏");
//标签放入状态栏右侧
statusBar->addPermanentWidget(label2);
【运行结果】

4. 模态和非模态对话框创建
模态对话框:
cpp
//点击新建按钮弹出对话框
connect(createPro, &QAction::triggered, this, [=]{
//创建模态对话框:弹出该对话框后,若不关闭则不能对其它窗口进行操作。
QDialog dialog1(this);
dialog1.setWindowTitle("模态对话框");
dialog1.resize(this->size()); //生成的对话框和窗口一样大
dialog1.exec(); //阻塞
qDebug() << "创建模态对话框" << Qt::endl;
});
【运行结果】

非模态对话框
cpp
connect(createPro, &QAction::triggered, this, [=]{
//创建非模态对话框:在不关闭该对话框的情况下可以对其它窗口进行操作。
QDialog *dialog2 = new QDialog(this);
dialog2->setWindowTitle("非模态对话框");
dialog2->resize(this->size()); //生成的对话框和窗口一样大
dialog2->show(); //show函数
dialog2->setAttribute(Qt::WA_DeleteOnClose);
qDebug() << "创建非模态对话框" << Qt::endl;
});
【运行结果】

补充知识点:

英语部分后面补吧