1. 程式人生 > >Qt學習(3)——選單欄和工具欄

Qt學習(3)——選單欄和工具欄

 0、建立專案:

前面步驟一樣,到下圖基類換一下:

1、選單欄

標頭檔案:

一些函式原型宣告:

void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget, Qt::Orientation orientation)

void addToolBar(QToolBar *toolbar)

QMenuBar *menuBar() const

QStatusBar *statusBar() const

開啟mainWindow.cpp編輯

選單可以分為三步操作:

設定選單欄,新增選單,新增動作。其中自動 分配空間,返回指標。

    resize(300,200);
    //選單欄
    QMenuBar *mBar = menuBar();

    //新增選單
    QMenu *pFile = mBar->addMenu("檔案");

    //新增選單項,新增動作
    QAction *pNew = pFile->addAction("退出");

    connect(pNew, &QAction::triggered,
        //Lambda 表示式
        [=]()
        {
            qDebug() << "已退出";
        }

        );

    pFile->addSeparator();//新增分割線
    QAction *pOpen = pFile->addAction("開啟");

顯示效果,截圖效果不完整:

2、工具欄

    //工具欄,選單欄的快捷方式
    QToolBar *tBar = addToolBar("toolBar");

    //工具欄新增快捷鍵
    tBar->addAction(pNew);

3、狀態列

    QStatusBar *qSBar = statusBar();
    QLabel *label = new QLabel(this);//分配空間,指定父物件
    label->setText("Normal Text File");
    qSBar->addWidget(label);
    //直接新增,並指定父物件,預設從左到右
    qSBar->addWidget(new QLabel("2",this));
    //從右往左新增:
    qSBar->addPermanentWidget(new QLabel("Coded by chen2511",this));

4、核心控制元件

setCentralWidget(textEdit);//只需要一個'QTextEdit'指標傳入,就可以建立一個文字框,可以有複製貼上操作

5、浮動視窗

addDockWidget();//這裡有兩個建構函式,選擇帶兩個引數的,先隨便填上,這樣才可以按F1檢視

void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget)

第一個引數是位置,以上圖片是引數的列舉型別;第二個引數是視窗指標。

也可以往窗口裡加東西,比如文字框

    QDockWidget *dock = new QDockWidget(this);
    addDockWidget(Qt::RightDockWidgetArea, dock);
    //往浮動窗口裡新增文字編輯區
    QTextEdit *textEdit1= new QTextEdit(this);
    dock->setWidget(textEdit1);

視窗可以隨意拖放,選單欄等視窗也可以。

附上完整程式碼(只改變mainWindow.cpp)

#include "mainwindow.h"
//選單欄標頭檔案
#include <QMenuBar>
#include <QMenu>
#include <QAction>
//列印資訊的標頭檔案
#include <QDebug>
//工具欄
#include <QToolBar>

#include <QPushButton>
//狀態列
#include <QStatusBar>
#include <QLabel>
//核心控制元件
#include <QTextEdit>
//浮動視窗
#include <QDockWidget>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(300,200);
    //選單欄
    QMenuBar *mBar = menuBar();

    //新增選單
    QMenu *pFile = mBar->addMenu("檔案");

    //新增選單項,新增動作
    QAction *pNew = pFile->addAction("退出");

    connect(pNew, &QAction::triggered,
        //Lambda 表示式
        [=]()
        {
            qDebug() << "已退出";
        }

        );

    pFile->addSeparator();//新增分割線
    QAction *popen = pFile->addAction("開啟");

    //工具欄,選單欄的快捷方式
    QToolBar *tBar = addToolBar("toolBar");

    //工具欄新增快捷鍵
    tBar->addAction(pNew);

    QPushButton *b = new QPushButton(this);
    b->setText("^-^");
    //新增小控制元件
    tBar->addWidget(b);

    connect(b,&QPushButton::clicked,
            [=]()
            {
                b->setText("123");
            }
            );

    //狀態列
    QStatusBar *qSBar = statusBar();
    QLabel *label = new QLabel(this);//分配空間,指定父物件
    label->setText("Normal Text File");
    qSBar->addWidget(label);
    //直接新增,並指定父物件,預設從左到右
    qSBar->addWidget(new QLabel("2",this));
    //從右往左新增:
    qSBar->addPermanentWidget(new QLabel("Coded by chen2511",this));

    //核心控制元件
    QTextEdit *textEdit = new QTextEdit(this);
    setCentralWidget(textEdit);

    //浮動視窗
    QDockWidget *dock = new QDockWidget(this);
    addDockWidget(Qt::RightDockWidgetArea, dock);
    //往浮動窗口裡新增文字編輯區
    QTextEdit *textEdit1= new QTextEdit(this);
    dock->setWidget(textEdit1);

}

MainWindow::~MainWindow()
{

}