Qt學習筆記(五):菜單欄


前面幾節學習使用的 Qt 項目都是以 QWidget 爲基類的,QWidget 是所有控件的基類,以 QWidget 爲基類創建的項目是一個空窗口。

如果想創建一個包含菜單欄、工具欄、狀態欄的窗口,可以在創建項目時,將基類改爲 QMainWindow,此處先不勾選“創建界面”,因爲要先用代碼來實現菜單欄的創建過程。如下所示:

從幫助文檔可以看到,QMainWindow 下面有很多公共方法,其中 menuBar()  方法就是用於創建菜單欄對象,如下:

通過代碼創建菜單欄如下所示:

MyMainWindow::MyMainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->resize(400, 300);
    
    // 創建菜單欄對象
    QMenuBar *mbar = this->menuBar();
    
    // 添加菜單
    QMenu *fileMenu = mbar->addMenu("文件(F)");
    QMenu *editMenu = mbar->addMenu("編輯(E)");
    
    // 添加菜單項
    QAction *newAction = fileMenu->addAction("新建(N)");
    
    // 爲“新建”菜單項綁定槽函數,點擊新建的時候,輸出一句話
    connect(newAction, &QAction::triggered, [=](){
        qDebug() << "新建文件";   
    });
    
    // 添加分割線
    fileMenu->addSeparator();
    
    // 添加菜單項
    QAction *openAction = fileMenu->addAction("打開(O)");
}

如果在創建 Qt 項目時,勾選了“創建界面”,如下:

那麼就可以在界面設計器上快速的編輯菜單欄:

注意:在編輯菜單項名稱的時候,發現不能輸入中文,此時,我們可以先給菜單項輸入一個英文,如下:

然後,我們就可以在屬性視圖下看到這個菜單項對象了:

注意:有一個屬性 objectName,其值(actionNew)就是根據我們在菜單項中輸入的名稱(new)自動生成的;假如,允許我們在菜單項中輸入中文,比如我寫個“新建”,那麼 objectName 的值就會變成 “action新建”,這顯然是不合理的;

如果需要在菜單項上顯示中文,那麼可以修改其 text 屬性;

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