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() { }