3.QMainWindow 菜单栏 工具栏 状态栏
1.菜单栏
一个主窗口最多只有一个菜单栏。位于主窗口顶部、主窗口标题栏下面。
-
创建菜单栏,通过QMainWindow类的menubar()函数获取主窗口菜单栏指针
QMenuBar * menuBar() const
-
创建菜单,调用QMenu的成员函数addMenu来添加菜单
QAction* addMenu(QMenu * menu)
QMenu* addMenu(const QString & title)
QMenu* addMenu(const QIcon & icon, const QString & title)
-
创建菜单项,调用QMenu的成员函数addAction来添加菜单项
QAction* activeAction() const
QAction* addAction(const QString & text)
QAction* addAction(const QIcon & icon, const QString & text)
QAction* addAction(const QString & text, const QObject * receiver,
const char * member, const QKeySequence & shortcut = 0)
QAction* addAction(const QIcon & icon, const QString & text,
const QObject * receiver, const char * member,
const QKeySequence & shortcut = 0)
2.工具栏
主窗口的工具栏上可以有多个工具条,通常采用一个菜单对应一个工具条的的方式,也可根据需要进行工具条的划分。
-
*直接调用QMainWindow类的addToolBar()函数获取主窗口的工具条对象,每增加一个工具条都需要调用一次该函数。
-
插入属于工具条的动作,即在工具条上添加操作。通过QToolBar类的addAction函数添加。
-
工具条是一个可移动的窗口,它的停靠区域由QToolBar的allowAreas决定,包括:
-
Qt::LeftToolBarArea 停靠在左侧
-
Qt::RightToolBarArea 停靠在右侧
-
Qt::TopToolBarArea 停靠在顶部
-
Qt::BottomToolBarArea 停靠在底部
-
Qt::AllToolBarAreas 以上四个位置都可停靠
使用setAllowedAreas()函数指定停靠区域:
setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea)
使用setMoveable()函数设定工具栏的可移动性:
setMoveable(false)//工具条不可移动, 只能停靠在初始化的位置上
3.状态栏
派生自QWidget类,使用方法与QWidget类似,QStatusBar类常用成员函数:
//添加小部件 从左往右添加
void addWidget(QWidget * widget, int stretch = 0)
// 从右往左添加
void addPermanentWidget(QWidget * widget, int stretch = 0);
//插入小部件
int insertWidget(int index, QWidget * widget, int stretch = 0)
//删除小部件
void removeWidget(QWidget * widget)
4.核心控件
#include <QTextEdit>
QTextEdit *textEdit = new QTextEdit(this);
setCentralWidget(textEdit);
5.浮动窗口
#include <QDockWidget>
// 添加一个浮动窗口
QDockWidget *dockW = new QDockWidget(this);
addDockWidget(Qt::RightDockWidgetArea, dockW);
// 给浮动窗口添加文本编辑控件
QTextEdit *textEditDockW = new QTextEdit(this);
dockW->setWidget(textEditDockW);
示例:
#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QToolBar>
#include <QStatusBar>
#include <QPushButton>
#include <QTextEdit>
#include <QDockWidget>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// meun
QMenuBar *mbar = menuBar();
QMenu *pFile = mbar->addMenu("File");
QAction *pNew = pFile->addAction("New File");
QAction *pOpen = pFile->addAction("Open File");
pFile->addSeparator(); // add separator
QAction *pRecentFile = pFile->addAction("Recent File");
//connect(pNew, &QAction::triggered, this, &QMainWindow::close);
// tool
QToolBar *toolBar = addToolBar("toolBar");
toolBar->addAction(pNew);
QPushButton *bOpenFile = new QPushButton(this);
bOpenFile->setText("Open File");
toolBar->addWidget(bOpenFile);
// Status
QStatusBar *pStatuesBar = statusBar();
QLabel *plabel = new QLabel(this);
plabel->setText("Normal text file");
pStatuesBar->addWidget(plabel);
// TextEdit
QTextEdit *textEdit = new QTextEdit(this);
setCentralWidget(textEdit);
// Dock window
QDockWidget *dockW = new QDockWidget(this);
addDockWidget(Qt::RightDockWidgetArea, dockW);
QTextEdit *textEditDockW = new QTextEdit(this);
dockW->setWidget(textEditDockW);
}
MainWindow::~MainWindow()
{
}

浙公网安备 33010602011771号