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决定,包括:
  1.          Qt::LeftToolBarArea      停靠在左侧
  2.          Qt::RightToolBarArea     停靠在右侧
  3.          Qt::TopToolBarArea       停靠在顶部
  4.          Qt::BottomToolBarArea    停靠在底部
  5.          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()
{
}

  

 
 

3.QMainWindow 菜单栏 工具栏 状态栏

上一篇:C# 中 finally 的用法


下一篇:登录注册框手机号和验证码校验--前端部分