先看一下本节完成品效果:
QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。
创建一个新项目,基类选择QMainWindow,如图,不要勾选创建界面
1、菜单栏
菜单栏类QMenuBar
菜单类QMenu
在mainwindow.cpp中进行如下修改:
可复制代码:
#include "mainwindow.h"
#include<QMenuBar>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(600,400);
QMenuBar *bar = menuBar();
this->setMenuBar(bar);
QMenu *fileMenu = bar->addMenu("文件");
QAction *newAction = fileMenu->addAction("新建");
fileMenu->addSeparator();
QAction *openAction = fileMenu->addAction("打开");
QMenu *subMenu = new QMenu;
subMenu->addAction("子菜单1");
subMenu->addAction("子菜单2");
newAction->setMenu(subMenu);
}
MainWindow::~MainWindow() {}
运行效果
2、工具栏
在mainwindow.cpp中进行如下修改
可复制代码:
#include "mainwindow.h"
#include<QMenuBar>
#include<QToolBar>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(600,400);
QMenuBar *bar = menuBar();
this->setMenuBar(bar);
QMenu *fileMenu = bar->addMenu("文件");
QAction *newAction = fileMenu->addAction("新建");
fileMenu->addSeparator();
QAction *openAction = fileMenu->addAction("打开");
QMenu *subMenu = new QMenu;
subMenu->addAction("子菜单1");
subMenu->addAction("子菜单2");
newAction->setMenu(subMenu);
//工具栏
QToolBar *toolBar = new QToolBar(this);
addToolBar(Qt::LeftToolBarArea,toolBar);
toolBar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
toolBar->setFloatable(false);
toolBar->setMovable(false);
toolBar->addAction(newAction);
toolBar->addAction(openAction);
}
MainWindow::~MainWindow() {}
运行效果:
3、状态栏
在mainwindow.cpp中进行如下添加
可复制代码 :
//状态栏
QStatusBar *sBar = statusBar();
setStatusBar(sBar);
QLabel *label1 = new QLabel("左侧信息1",this);
QLabel *label2 = new QLabel("右侧信息1",this);
QLabel *label3 = new QLabel("左侧信息2",this);
sBar->addWidget(label1);
sBar->addPermanentWidget(label2);
sBar->insertWidget(0,label3);
运行效果:
4、铆接部件 浮动窗口
代码:
可复制代码
//铆接部件
QDockWidget *dock = new QDockWidget("浮动窗口",this);
addDockWidget(Qt::BottomDockWidgetArea,dock);
dock->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);
//核心部件
QTextEdit *edit = new QTextEdit(this);
setCentralWidget(edit);
运行效果
本节代码汇总(mainwindow.cpp):
#include "mainwindow.h"
#include<QMenuBar>
#include<QToolBar>
#include<QLabel>
#include<QStatusBar>
#include<QDockWidget>
#include<QTextEdit>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(600,400);
QMenuBar *bar = menuBar();
this->setMenuBar(bar);
QMenu *fileMenu = bar->addMenu("文件");
QAction *newAction = fileMenu->addAction("新建");
fileMenu->addSeparator();
QAction *openAction = fileMenu->addAction("打开");
QMenu *subMenu = new QMenu;
subMenu->addAction("子菜单1");
subMenu->addAction("子菜单2");
newAction->setMenu(subMenu);
//工具栏
QToolBar *toolBar = new QToolBar(this);
addToolBar(Qt::LeftToolBarArea,toolBar);
toolBar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
toolBar->setFloatable(false);
toolBar->setMovable(false);
toolBar->addAction(newAction);
toolBar->addAction(openAction);
//状态栏
QStatusBar *sBar = statusBar();
setStatusBar(sBar);
QLabel *label1 = new QLabel("左侧信息1",this);
QLabel *label2 = new QLabel("右侧信息1",this);
QLabel *label3 = new QLabel("左侧信息2",this);
sBar->addWidget(label1);
sBar->addPermanentWidget(label2);
sBar->insertWidget(0,label3);
//铆接部件
QDockWidget *dock = new QDockWidget("浮动窗口",this);
addDockWidget(Qt::BottomDockWidgetArea,dock);
dock->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);
//核心部件
QTextEdit *edit = new QTextEdit(this);
setCentralWidget(edit);
}
MainWindow::~MainWindow() {}