【Qt】Qt资源应用--菜单图标
00. 目錄
文章目錄
- 00. 目錄
- 01. 概述
- 02. 開發環境
- 03. 主窗口菜單設計
- 04. 添加資源菜單
- 05. 使用資源文件
- 06. 使用代碼添加菜單圖標
- 07. 附錄
01. 概述
主窗口部件就是一般的應用程序主窗口,它包含了菜單欄、工具欄、中心部件、狀態欄和可停靠部件等。接下來將著重介紹菜單的實現以及使用資源文件來添加菜單圖標。
02. 開發環境
Windows系統:Windows10
Qt版本:Qt5.15或者Qt6
03. 主窗口菜單設計
3.1 新建Qt Widgets Application,項目名稱4MainWindow,基類選擇QMainWindow,類名為MainWindow。
3.2 創建完項目后,雙擊mainwindow.ui文件進入設計模式。在這里可以看到界面左上角的“在這里輸入”,我們可以在這里添加菜單。雙擊“在這里輸入”,將其更改為“文件(&F)”,然后按下回車鍵,效果如下圖所示。這里的&F表明將菜單的快捷鍵設置為了Alt+ F,可以看到,實際的顯示效果中&符號是隱藏的。
3.3 在文件菜單中添加“新建(&N)”子菜單,效果如下圖所示。菜單后面的那個加號圖標是用來創建下一級菜單的。(PS:菜單中如果無法輸入中文,可以從別處復制粘貼)
04. 添加資源菜單
4.1 Qt中可以使用資源文件將各種類型的文件添加到最終生成的可執行文件中,這樣就可以避免使用外部文件而出現的一些問題。而且,在編譯時Qt還會將資源文件進行壓縮,我們可能發現生成的可執行文件比我們添加到其中的資源文件還要小。
4.2 我們向項目中添加新文件,模板選擇Qt分類中的Qt資源文件(Qt Resource File)。如下圖所示。然后將名稱設置為image。
4.3 添加完文件后會自動打開該資源文件,需要先添加前綴,點擊“添加”按鈕,然后選擇“添加前綴”,默認的前綴是“/new/prefix1”,這個可以隨意修改(不要出現中文字符),我們這里因為要添加圖片,所以修改為“/image”。然后再按下添加按鈕來添加文件,這里最好將所有要用到的圖片放到項目目錄中。比如這里在項目目錄中新建了一個images文件夾,然后將需要的圖標文件粘貼進去。添加完文件后,如下圖所示。
4.4 當添加完資源后,一定要按下Ctrl + S來保存資源文件,不然在后面可能無法顯示已經添加的資源。
05. 使用資源文件
5.1 Qt中的一個菜單被看做是一個Action,我們在下面的Action編輯器(Action Editor)中可以看到剛才添加的“新建”菜單,如下圖所示。
5.2 雙擊該條目,會彈出編輯動作對話框,這里可以進行各項設置,比如我們可以設置菜單項的快捷鍵,點擊一下Shortcut后面的行編輯器,然后按下鍵盤上的Ctrl + N,這樣就可以將該菜單項的快捷鍵設置為Ctrl + N。如下圖所示。那么大家可能會問,既然該菜單項的快捷鍵是這么設置的,那么菜單項名稱“新建(N)”中的N是什么呢?這個可以被稱為加速鍵,就是只有當文件菜單處于激活(顯示)狀態時,按下N鍵才會執行新建菜單的功能。
5.3 在編輯動作對話框中的“圖標”后面的[[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-M6SQqxnK-1616401989052)(assets/205600esc55c2kf2fsfifl.png.thumb.jpg)]](javascript:;)黑色箭頭下拉框可以選擇使用資源還是使用文件來最為圖標,如果使用文件的話,那么就可以直接在彈出的文件對話框中選擇本地磁盤上的一個圖標文件。如果使用資源的方式,如果直接點擊這個按鈕就是默認的使用資源。
06. 使用代碼添加菜單圖標
下面我們使用代碼再來添加一個菜單項,并為其設置圖標。在編輯模式打開mainwindow.cpp文件,并在構造函數中添加如下圖所示代碼:
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);//創建新的動作QAction *openAction = new QAction(tr("&Open"), this);//添加圖標QIcon icon(":/image/images/task.png");openAction->setIcon(icon);//設置快捷鍵openAction->setShortcut(QKeySequence(tr("Ctrl+O")));//在文件菜單中設置新的打開動作ui->menu_F->addAction(openAction);//創建新的編輯菜單QMenu *menu_E = ui->menubar->addMenu(tr("編輯(&E)"));QAction *findAction = new QAction(tr("&Find"), this);QIcon icon2(":/image/images/setting.png");findAction->setIcon(icon2);findAction->setShortcut(QKeySequence("Ctrl+F"));menu_E->addAction(findAction); }這里添加圖標時,就使用了資源文件中的圖標。使用資源文件,需要在最開始使用冒號,然后添加前綴,后面是文件的路徑。在代碼中使用“文件菜單”,就是使用其objectName。主窗口上的菜單都是在菜單欄menuBar上的,因為這里使用了設計模式,所以可以通過ui->menuBar來獲取菜單欄,菜單欄是QMenuBar類對象。如果不使用設計模式而使用純代碼創建項目,那么可以直接在MainWindow類中使用menuBar()方法來獲取菜單欄。菜單欄上可以通過addMenu()來添加新的菜單,而菜單中可以使用QAction來創建菜單項。現在可以運行程序查看效果。
07. 附錄
總結
以上是生活随笔為你收集整理的【Qt】Qt资源应用--菜单图标的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Qt】Qt登录对话框(纯代码实现)
- 下一篇: 【Qt】简单Qt文本查找功能