QMainWidown类窗口框架一般包含以下组件:
1、菜单栏(QMenuBar),一个主窗口只能有一个
2、工具栏(QToolBar),可以有多个
3、状态栏(QStatusBar),一个主窗口只能有一个
4、中心部件(Central Widget),一个主窗口只能有一个
5、Dock部件(QDockWidget,铆接部件)
菜单栏(QMenuBar)
1、创建菜单栏
// QMenuBar *bar = menuBar(); // 创建菜单栏,只有一个
QMenuBar *bar = new QMenuBar;
this->setMenuBar(bar); //设置菜单栏到窗口中
2、添加菜单栏
QMenu *fileMenu = bar->addMenu("文件");
QMenu *editMenu = bar->addMenu("编辑");
QMenu *viewMenu = bar->addMenu("查看");
QMenu *goMenu = bar->addMenu("前往");
QMenu *bookMarkMenu = bar->addMenu("书签");
QMenu *helpMenu = bar->addMenu("帮助");
3、添加菜单栏每一栏的选项
//添加文件菜单栏添加选项
QAction *newAction = fileMenu->addAction("新建");
QAction *openFileAction = fileMenu->addAction("打开");
//添加分割线
fileMenu->addSeparator();
QAction *closeFileAction = fileMenu->addAction("关闭")
工具栏( QToolBar)
1、创建工具栏
//创建工具栏
QToolBar *tBar = new QToolBar(this);
//将工具栏添加到窗口中,默认添加到左边
addToolBar(Qt::LeftToolBarArea, tBar);
//设置允许左边和右边停靠
tBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
2、向工具栏添加选项
//向工具栏添加选项
QAction *contentToolBar = tBar->addAction("内容");
//添加分割线
tBar->addSeparator();
QAction *indexToolBar = tBar->addAction("索引");
tBar->addSeparator();
QAction *searchToolBar = tBar->addAction("查找");
状态栏(QStatusBar)
1、创建状态栏
//创建状态栏
QStatusBar *statBar = new QStatusBar(this);
//将状态栏放达到窗口中
setStatusBar(statBar);
2、为状态栏添加内容
QLabel *label1 = new QLabel("字数", this);
//将标签放入状态栏
statBar->addWidget(label1);
QLabel *label2 = new QLabel("页数", this);
statBar->addPermanentWidget(label2);
铆接部件(浮动窗口)
窗口可以拖动到任意位置,甚至可以离开主窗口
//铆接部件(浮动窗口) 可以有很多个
QDockWidget *dock = new QDockWidget("铆接部件", this);
this->addDockWidget(Qt::BottomDockWidgetArea, dock);
设置核心部件
//设置核心部件,只能有一个,这里设置为一边可编辑的Text
QTextEdit *editText = new QTextEdit(this);
setCentralWidget(editText);
完整代码
#include "mainwindow.h"
#include <QMenuBar>
#include <QMenu>
#include <QToolBar>
#include <QAction>
#include <QStatusBar>
#include <QLabel>
#include <QTextEdit>
#include <QDockWidget>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
setWindowTitle("Qt助手");
this->resize(600, 400);
// QMenuBar *bar = menuBar(); // 创建菜单栏,只有一个
QMenuBar *bar = new QMenuBar;
this->setMenuBar(bar); //设置菜单栏到窗口中
// setMenuBar(bar);
QMenu *fileMenu = bar->addMenu("文件");
QMenu *editMenu = bar->addMenu("编辑");
QMenu *viewMenu = bar->addMenu("查看");
QMenu *goMenu = bar->addMenu("前往");
QMenu *bookMarkMenu = bar->addMenu("书签");
QMenu *helpMenu = bar->addMenu("帮助");
//添加文件菜单栏添加选项
QAction *newAction = fileMenu->addAction("新建");
QAction *openFileAction = fileMenu->addAction("打开");
//添加分割线
fileMenu->addSeparator();
QAction *closeFileAction = fileMenu->addAction("关闭");
//创建工具栏
QToolBar *tBar = new QToolBar(this);
//将工具栏添加到窗口中,默认添加到左边
addToolBar(Qt::LeftToolBarArea, tBar);
//设置允许左边和右边停靠
tBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
//向工具栏添加选项
QAction *contentToolBar = tBar->addAction("内容");
//添加分割线
tBar->addSeparator();
QAction *indexToolBar = tBar->addAction("索引");
tBar->addSeparator();
QAction *searchToolBar = tBar->addAction("查找");
//创建状态栏
QStatusBar *statBar = new QStatusBar(this);
//将状态栏放达到窗口中
setStatusBar(statBar);
QLabel *label1 = new QLabel("字数", this);
//将标签放入状态栏
statBar->addWidget(label1);
QLabel *label2 = new QLabel("页数", this);
statBar->addPermanentWidget(label2);
//铆接部件(浮动窗口) 可以有很多个
QDockWidget *dock = new QDockWidget("铆接部件", this);
this->addDockWidget(Qt::BottomDockWidgetArea, dock);
//设置核心部件,只能有一个,这里设置为一边可编辑的Text
QTextEdit *editText = new QTextEdit(this);
setCentralWidget(editText);
}