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

目錄

 

 0、創建項目:

1、菜單欄

2、工具欄

3、狀態欄

4、核心控件

5、浮動窗口

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


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

}

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章