QMainWindow菜单栏和工具栏
QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar).
多个工具栏(tool bars).多个锚接部件(dock widgets).一个状态栏(status bar)
及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。
创建项目时选择MainWindow基类,去掉生成ui选项
#include "mainwindow.h"
#include "QMenuBar"
#include "QToolBar"
#include "QPushButton"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->resize(600,400);
//菜单栏创建
QMenuBar *bar=menuBar();
//将菜单栏放入到窗口中
setMenuBar(bar);
//创建文件菜单
QMenu *fileMenu=bar->addMenu("文件(F)");
//创建菜单项
fileMenu->addAction("新建");
//添加分割线
fileMenu->addSeparator();
QAction *openAction=fileMenu->addAction("打开");
//创建编辑菜单
QMenu *editMenu=bar->addMenu("编辑(E)");
editMenu->addAction("undo");
//创建构建菜单
QMenu *buildMenu=bar->addMenu("构建(B)");
buildMenu->addAction("构建所有");
//创建工具栏 可以有多个工具栏
QToolBar *toolBar=new QToolBar(this);
//把工具栏放在窗口中 默认位置 左边
this->addToolBar(Qt::LeftToolBarArea,toolBar);
//设置工具栏允许停靠范围
toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
//设置浮动
toolBar->setFloatable(false);
//设置移动(总开关) 不能移动工具栏
toolBar->setMovable(false);
//工具栏设置内容
toolBar->addAction("新建");
//工具栏添加分割线
toolBar->addSeparator();
//也可以使用菜单栏的子项返回值
toolBar->addAction(openAction);
//工具栏中添加控件
QPushButton *btn=new QPushButton("打开文件",this);
toolBar->addWidget(btn);
}
状态栏 铆接部件 中心部件
#include "mainwindow.h"
#include "QStatusBar"
#include "QLabel"
#include "QDockWidget"
#include "QTextEdit"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->resize(600,400);
//状态栏最多只有一个
QStatusBar *stBar=statusBar();
//设置到窗口中
this->setStatusBar(stBar);
//放标签控件
QLabel* label=new QLabel("提示信息",this);
stBar->addWidget(label);
QLabel* label2=new QLabel("右侧提示",this);
stBar->addPermanentWidget(label2);
//铆接部件(浮动窗口) 可以有多个
QDockWidget *dockWidget=new QDockWidget("浮动",this);
addDockWidget(Qt::BottomDockWidgetArea,dockWidget);
//设置后期停靠区域 只允许上下
dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
//设置中心部件
QTextEdit *edit=new QTextEdit(this);
//设置中间组件
setCentralWidget(edit);
}
菜单项功能触发
//创建菜单栏
QMenuBar *bar=menuBar();
setMenuBar(bar);
//创建退出菜单项
QMenu *startMenu=bar->addMenu("开始");
//退出的实现
connect(quitAction,&QAction::triggered,[=](){
this->close();
});