- 博客主頁:Duck Bro 博客主頁
- 系列專欄:Qt 專欄
- 關注博主,后期持續更新系列文章
- 如果有錯誤感謝請大家批評指出,及時修改
- 感謝大家點贊👍收藏?評論?
Qt窗口 | 菜單欄 | QMenuBar的使用及說明
文章編號:Qt 學習筆記 / 47
文章目錄
- Qt窗口 | 菜單欄 | QMenuBar的使用及說明
- 一、菜單欄
- 1. 什么是菜單欄
- 2. 菜單欄的組成控件
- 二、代碼創建菜單欄及各組件
- 1. 創建菜單欄
- 2. 創建菜單
- 3. 創建菜單項
- 4. 添加分割線
- 5. 添加快捷鍵
- 6. 添加子菜單
- 7. 添加圖標
- 8. 文件完整代碼
- 三、圖形化創建菜單欄及各組件
- 1. 創建以QMainWindow為基類的項目
- 2. 圖形化創建菜單欄各組件
一、菜單欄
1. 什么是菜單欄
菜單欄是指在計算機程序或操作系統界面上的一個水平條,通常位于頂部或頂部附近,用來顯示各種功能選項和操作命令。
菜單欄通常包含多個菜單,每個菜單都有一個標題和一系列相關的命令或選項。用戶可以通過點擊菜單標題或者在菜單欄上的相應按鈕來打開菜單,并從中選擇需要的操作。
在菜單欄中,常見的命令包括文件(File)、編輯(Edit)、視圖(View)、工具(Tools)、幫助(Help)等,不同的程序或操作系統可能會有不同的菜單欄布局和選項。菜單欄為用戶提供了一種直觀、可視化的方式來瀏覽和選擇程序的各種功能和操作。
2. 菜單欄的組成控件
-
菜單:菜單是菜單欄的核心組件,用來展示可選的操作項或功能。菜單通常以垂直列表的形式呈現,每個菜單項都可以點擊或懸停以顯示子菜單或執行相應的操作。
-
下拉菜單:下拉菜單是菜單欄中的特殊菜單項,點擊或懸停在這些菜單項上,會展開一個子菜單,用戶可以進一步選擇所需的操作。
-
菜單項:是菜單欄中的可選操作或功能的單個項目。每個菜單項通常由一個標簽或文本描述以及相應的操作或功能組成。
-
分隔符:分隔符是菜單欄中的一條水平線,用于在菜單中分隔不同的菜單項,使菜單更加清晰易讀。分隔符一般用于將相似的菜單項分組,或者將不同類型的菜單項分隔開。
二、代碼創建菜單欄及各組件
1. 創建菜單欄
步驟流程
創建菜單欄
創建的兩種方式:
- 菜單欄的創建可以借助于 QMainWindow類 提供的 menuBar() 函數來實現。
- 在堆上動態創建
使用setMenuBar把菜單欄放到窗口中
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//QMenuBar* menubar = new QMenuBar();//創建菜單欄QMenuBar* menubar = this->menuBar(); //推薦使用這種方法//菜單欄放入窗口中this->setMenuBar(menubar);
}
運行結果
注意:現在是只有菜單欄,菜單欄中沒有菜單所以顯示空白
2. 創建菜單
步驟流程
創建菜單,添加菜單到菜單欄
//創建菜單
QMenu* menu1 = new QMenu("文件");
QMenu* menu2 = new QMenu("編輯");
QMenu* menu3 = new QMenu("構建");
//添加菜單到菜單欄中
menubar->addMenu(menu1);
menubar->addMenu(menu2);
menubar->addMenu(menu3);
運行結果
3. 創建菜單項
步驟流程
創建菜單,添加菜單到菜單欄
QAction 可以給菜單欄使?, 也可以給?具欄使?.
//創建菜單項
QAction* action1 = new QAction("新建");
QAction* action2 = new QAction("打開");
QAction* action3 = new QAction("保存");
//添加菜單項到菜單中
menu1->addAction(action1);
menu1->addAction(action2);
menu1->addAction(action3);
運行結果
4. 添加分割線
步驟流程
添加分割線
//添加菜單項到菜單中
menu1->addAction(action1);
//在新建和保存中添加分割線
menu1->addSeparator();
menu1->addAction(action2);
menu1->addAction(action3);
運行結果
5. 添加快捷鍵
使用&+字母,給文本中進行添加快捷鍵
QMenu* menu1 = new QMenu("文件(&A)"); //添加快捷鍵 &+字母
QMenu* menu2 = new QMenu("編輯(&M)"); //使用Alt+字母觸發
QMenu* menu3 = new QMenu("構建(&G)");
運行結果
6. 添加子菜單
創建父菜單和子菜單,把子菜單添加到父菜單
//創建菜單
QMenu* menuparent = new QMenu("父菜單");
QMenu* menuchild = new QMenu("子菜單");
//添加菜單到菜單欄中
menubar->addMenu(menuparent);
menuparent->addMenu(menuchild);
運行結果
7. 添加圖標
在阿里巴巴矢量圖標庫中進行查看合適的圖標,如下圖
將圖片加入到qrc文件中,詳細步驟參考文章:qrc文件機制
將圖片添加到菜單項中
//創建菜單項QAction* action1 = new QAction("新建");//添加新建圖標action1->setIcon(QIcon(":/add.png"));QAction* action2 = new QAction("打開");QAction* action3 = new QAction("保存");//添加保存圖標action3->setIcon(QIcon(":/save.png"));
運行結果
8. 文件完整代碼
#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//QMenuBar* menubar = new QMenuBar();//創建菜單欄QMenuBar* menubar = this->menuBar(); //推薦使用這種方法//菜單欄放入窗口中this->setMenuBar(menubar);//創建菜單QMenu* menu1 = new QMenu("文件(&A)"); //添加快捷鍵 &+字母QMenu* menu2 = new QMenu("編輯(&M)");QMenu* menu3 = new QMenu("構建(&G)");QMenu* menuparent = new QMenu("父菜單");QMenu* menuchild = new QMenu("子菜單");//添加菜單到菜單欄中menubar->addMenu(menu1);menubar->addMenu(menu2);menubar->addMenu(menu3);menubar->addMenu(menuparent);menuparent->addMenu(menuchild);//創建菜單項QAction* action1 = new QAction("新建");//添加新建圖標action1->setIcon(QIcon(":/add.png"));QAction* action2 = new QAction("打開");QAction* action3 = new QAction("保存");//添加保存圖標action3->setIcon(QIcon(":/save.png"));//添加菜單項到菜單中menu1->addAction(action1);//在新建和保存中添加分割線menu1->addSeparator();menu1->addAction(action2);menu1->addAction(action3);}MainWindow::~MainWindow()
{delete ui;
}
三、圖形化創建菜單欄及各組件
1. 創建以QMainWindow為基類的項目
過程參考文章Qt窗口 | Qt窗口介紹 | QMainwindow類及各組件介紹
2. 圖形化創建菜單欄各組件
- 在打開Qt自帶的ui文件界面后,得到以下界面
- 雙擊點擊界面中(在這里輸入),在菜單欄中進行添加菜單
- 在上述創建菜單后,界面發生改變得到以下界面
- 點擊創建好的菜單,雙擊在這里輸入,添加菜單項(新建)
注意:由于Qt在此處存在BUG,中文菜單項需要復制粘貼的方式進行添加。
- 添加子菜單及子菜單項
- 添加分隔符
- 點擊運行,查看結果