【Qt開發】菜單欄,工具欄和狀態欄


 概述

菜單欄,工具欄,狀態欄應用中經常見到,下圖解釋一目了然,實際開發中 兩種方式來實現,一種是使用純代碼QMenuBar,QToolBar,QStatusBar來設計開發,另一種使用Qt Designer通過拖拽的形式來實現,減少了大量的代碼,使用簡單。

菜單欄

1.新建項目UI基類選擇QMainWindow。

2.雙擊在這里輸入,可修改一級菜單的名稱。

3.動作編輯器里添加actionOpen,actionSave兩個動作

4.鼠標左鍵拖拽action到文件下的二級菜單即可,同時打開和保存之間可以添加分隔符

5.頭文件中添加槽

private slots:
    void OnOpenFile();
    void OnSaveFile();

6.源文件實現槽函數

/************************************
@ Brief:        打開文件
@ Author:        紅燒肉 
@ Created:        2019/04/22
@ Return:            
************************************/
void MenuDialog::OnOpenFile()
{
    QMessageBox::information(this, "提示", "點擊了打開Action", QMessageBox::Yes);
}

/************************************
@ Brief:        保存文件
@ Author:        紅燒肉
@ Created:        2019/04/22
@ Return:
************************************/
void MenuDialog::OnSaveFile()
{
    QMessageBox::information(this, "提示", "點擊保存Action!", QMessageBox::Yes)
}

7.構造函數里連接信號與槽

    connect(ui.actionOpen, &QAction::triggered, this, &MenuDialog::OnOpenFile);
    connect(ui.actionSave, &QAction::triggered, this, &MenuDialog::OnSaveFile);

工具欄

菜單下方的區域就是用來存放工具欄。

添加工具欄更簡單,直接拖拽acitonOpen,actionSave到該區域即可

常用方法:

void setMovable(bool movable):設置工具欄區域是否可移動

void setAllowedAreas(Qt::ToolBarAreas areas):設置工具欄可移動的范圍

void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle):設置工具欄按鈕的風格,如純圖標,文字,文字圖標都有等

 

狀態欄  

 常用方法

void addWidget(QWidget *widget, int stretch = 0):狀態欄左側添加一個widget。對widget的拉伸系數為0。

void addPermanentWidget(QWidget *widget, int stretch = 0):狀態欄右側添加一個widget。

void setSizeGripEnabled(bool):設置右下角拖動縮放的控制點。

void showMessage(const QString &message, int timeout = 0):留言顯示,過期時間為 timeout。

 示例代碼:

    statusBar()->addWidget(new QLabel("label1"));
    statusBar()->addWidget(new QLabel("label2"));
    statusBar()->addPermanentWidget(new QLabel("label3"));
    statusBar()->addPermanentWidget(new QLabel("label4"));
    statusBar()->showMessage("留言", 5000);
    statusBar()->setSizeGripEnabled(false); //不顯示右下角拖放控制點
    statusBar()->setStyleSheet(QString("QStatusBar::item{border: 0px}")); // QSS不顯示label的邊框

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM