QT學(xué)記四:菜單欄
1.QT的菜單欄
在某些軟件中,會(huì)有菜單欄這個(gè)選擇,如QT軟件中的菜單欄,如下圖:

點(diǎn)擊菜單欄中的文件就會(huì)顯示如右:菜單欄應(yīng)用場(chǎng)景:軟件開發(fā)中的功
能選擇比較多的時(shí)候。

2.菜單欄、菜單、菜單項(xiàng)
菜單欄:專門放菜單,相當(dāng)一個(gè)專門放菜單的容器;
菜單:其下有很多選擇項(xiàng)拱用戶選擇,即菜單項(xiàng)

3.菜單欄的類介紹
一個(gè)主窗口最多只有一個(gè)菜單欄, 位于主窗口頂部、 主窗口標(biāo)題欄下面。
(1)創(chuàng)建菜單欄
通過(guò) QMainWindow 類的 menuBar() 函數(shù)獲取主窗口菜單欄指針 QMenuBar * menuBar() const ;QMenuBar就是一個(gè)菜單欄類,this->menuBar();就會(huì)獲得該窗口的菜單欄這個(gè)對(duì)象。?
(2)菜單欄創(chuàng)建菜單
要?jiǎng)?chuàng)建菜單, 需要調(diào)用 QMenu 的成員函數(shù) addMenu 來(lái)添加菜單
QAction* addMenu(QMenu * menu)
QMenu* addMenu(const QString & title)
那么誰(shuí)來(lái)添加?
前面的菜單欄:this->menubar();
即 QMenu? * menu(菜單) = this->menuBar()->addMenu(“菜單名”);
(3)創(chuàng)建菜單項(xiàng)
Qt 并沒有專門的菜單項(xiàng)類, 只是使用一個(gè) QAction 類, 抽象出公共的動(dòng)作。當(dāng)我們把 QAction 對(duì)象添加到菜單, 就顯示成一個(gè)菜單項(xiàng)。
QAction(const QString &text, QObject *parent = nullptr)
用戶可以通過(guò)點(diǎn)擊菜單項(xiàng)、? 使用快捷鍵來(lái)激活這個(gè)動(dòng)作。
即QAction *返回名 = new QAction(tr(“打開”),this);
這里一定要加this。這是因?yàn)橐_定它的父對(duì)象。
(4)菜單添加菜單項(xiàng)
添加菜單項(xiàng), 需調(diào)用 QMenu 的成員函數(shù) addAction 來(lái)添加菜單項(xiàng)
QAction* addAction(const QString & text)
QAction* addAction(const QIcon & icon, const QString & text)
QAction* addAction(const QString & text, const QObject * receiver,
即如 menu(菜單).addAction(“菜單項(xiàng)名”);?
7.程序設(shè)計(jì)之mainwindow.h頭文件(最后面有代碼塊復(fù)制)
純粹是使用QT中的類來(lái)創(chuàng)建的。

8.程序設(shè)計(jì)之mainwindow.cpp文件



9.在ui界面設(shè)計(jì)中設(shè)計(jì)菜單欄
在 qt 中, 如果想要使用菜單欄功能, 那么界面的基類要選擇QMainWindow,不能選擇 QWidget QDialog
實(shí)現(xiàn)菜單欄步驟如下:
第一步: 在 UI界面設(shè)計(jì)文件中, 直接雙擊菜單欄,輸入完畢后,要按Enter回車確認(rèn)才可以設(shè)置成功。
結(jié)果:

第二步: 設(shè)置菜單項(xiàng)(tuichu)中文名為“退出”,雙擊下面的紅色框即可以打開菜單項(xiàng)的屬性設(shè)置。在設(shè)置快捷鍵時(shí),選中Shortcut,然后在鍵盤按你要設(shè)置的按鍵。

第三步:建立菜單項(xiàng)的點(diǎn)擊動(dòng)作的信號(hào)與槽。鼠標(biāo)右鍵,選中“轉(zhuǎn)到槽”,彈出選擇信號(hào),選擇信號(hào)“triggered()”,此信號(hào)是一次性的,點(diǎn)擊后,無(wú)法改變狀態(tài),要么是打開,要么是關(guān)閉。
“toggled()”是checkable按鈕或是圖標(biāo)來(lái)使用的。打開、關(guān)閉兩個(gè)狀態(tài)之間轉(zhuǎn)變。?

第四步:編寫退出槽函數(shù)的程序

結(jié)果:點(diǎn)擊管理,再點(diǎn)擊退出,會(huì)直接關(guān)閉當(dāng)前窗口。

10.有提示的退出
想要有提示的退出,要重載一個(gè)函數(shù):
函數(shù)中:
頭文件:
11.有提示的退出之程序設(shè)計(jì)一

13.有提示的退出之程序設(shè)計(jì)二
在MainWindow.cpp文件中實(shí)現(xiàn)closeEvent函數(shù)

結(jié)果:點(diǎn)擊yes才會(huì)退出,點(diǎn)擊no不退出

視頻結(jié)果顯示:
可以在視頻稿件中查找看到。
代碼塊:
mainwindow.h
mainwindow.cpp
謝謝閱讀,覺得好,點(diǎn)個(gè)贊!

