Qt控件之QToolButton的使用及示例
簡(jiǎn)介
QToolButton
類提供了一個(gè)快速訪問(wèn)命令或選項(xiàng)的按鈕,通常在 QToolBar
內(nèi)部使用。
工具按鈕是一種特殊的按鈕,用于快速訪問(wèn)特定的命令或選項(xiàng)。與普通的命令按鈕相反,工具按鈕通常不顯示文本標(biāo)簽,而是顯示一個(gè)圖標(biāo)。
通常情況下,工具按鈕是通過(guò)使用 QToolBar::addAction()
創(chuàng)建新的 QAction
實(shí)例或?qū)F(xiàn)有的操作添加到工具欄的方式來(lái)創(chuàng)建的。還可以像創(chuàng)建任何其他小部件一樣構(gòu)造工具按鈕,并將它們與其他小部件一起布局排列。
工具按鈕的一個(gè)經(jīng)典用途是選擇工具;例如,繪圖程序中的 “畫筆” 工具。這可以通過(guò)使用 QToolButton
作為切換按鈕(參見 setToggleButton()
)來(lái)實(shí)現(xiàn)。
QToolButton
支持自動(dòng)凸起。在自動(dòng)凸起模式下,只有當(dāng)鼠標(biāo)指向按鈕時(shí),按鈕才會(huì)繪制 3D 邊框。當(dāng)按鈕在 QToolBar
內(nèi)部使用時(shí),該功能會(huì)自動(dòng)開啟??梢允褂?nbsp;setAutoRaise()
方法進(jìn)行更改。
工具按鈕的圖標(biāo)是使用 QIcon
設(shè)置的。這樣可以為禁用狀態(tài)和活動(dòng)狀態(tài)指定不同的像素圖。禁用的像素圖在按鈕的功能不可用時(shí)使用。當(dāng)鼠標(biāo)懸停在按鈕上時(shí),活動(dòng)的像素圖將顯示出來(lái),因?yàn)榘粹o會(huì)自動(dòng)凸起。
可以使用 setToolButtonStyle()
和 setIconSize()
調(diào)整按鈕的外觀和尺寸。當(dāng)在 QMainWindow
中的 QToolBar
中使用時(shí),按鈕會(huì)自動(dòng)調(diào)整為 QMainWindow
的設(shè)置(參見 QMainWindow::setToolButtonStyle()
和 QMainWindow::setIconSize()
)。工具按鈕還可以顯示一個(gè)箭頭符號(hào),可以使用 arrowType
指定。
工具按鈕可以在彈出菜單中提供額外的選擇??梢允褂?nbsp;setMenu()
設(shè)置彈出菜單。使用 setPopupMode()
來(lái)配置具有菜單設(shè)置的工具按鈕的不同模式。默認(rèn)模式是 DelayedPopupMode
,該模式通常與 Web
瀏覽器中的 “返回” 按鈕一起使用。按住按鈕一段時(shí)間后,會(huì)彈出一個(gè)菜單,顯示要跳轉(zhuǎn)到的可能頁(yè)面列表。默認(rèn)的延遲時(shí)間是 600 毫秒,可以使用 setPopupDelay()
進(jìn)行調(diào)整。
常用函數(shù)
QToolButton
是 Qt 框架提供的一個(gè)工具按鈕控件,用于在用戶界面中提供快捷訪問(wèn)命令或選項(xiàng)的按鈕。
以下是關(guān)于 QToolButton
的構(gòu)造函數(shù)、枚舉、常用函數(shù)、信號(hào)和槽的介紹:
構(gòu)造函數(shù)
:- QToolButton(QWidget *parent = nullptr):使用指定的父窗口創(chuàng)建一個(gè)默認(rèn)的 QToolButton 實(shí)例。
- QToolButton(const QString &text, QWidget *parent = nullptr):使用指定的文本和父窗口創(chuàng)建一個(gè) QToolButton 實(shí)例。
枚舉
:- ToolButtonPopupMode:枚舉類型,定義了工具按鈕的彈出菜單模式:
- QToolButton::DelayedPopup:默認(rèn)模式,長(zhǎng)按按鈕后延遲彈出菜單。
- QToolButton::MenuButtonPopup:點(diǎn)擊按鈕箭頭圖標(biāo)后立即彈出菜單。
- QToolButton::InstantPopup:點(diǎn)擊按鈕后立即彈出菜單。
- ToolButtonPopupMode:枚舉類型,定義了工具按鈕的彈出菜單模式:
常用函數(shù)
:- void setIcon(const QIcon &icon):設(shè)置工具按鈕的圖標(biāo)。
- QIcon icon() const:獲取工具按鈕的圖標(biāo)。
- void setText(const QString &text):設(shè)置工具按鈕的文本。
- QString text() const:獲取工具按鈕的文本。
- void setAutoRaise(bool enable):設(shè)置是否在鼠標(biāo)指向按鈕時(shí)自動(dòng)凸起。
- bool autoRaise() const:檢查按鈕是否在鼠標(biāo)指向時(shí)自動(dòng)凸起。
- void setPopupMode(QToolButton::ToolButtonPopupMode mode):設(shè)置工具按鈕的彈出菜單模式。
- QToolButton::ToolButtonPopupMode popupMode() const:獲取工具按鈕的彈出菜單模式。
信號(hào)和槽
:- void clicked(bool checked = false):點(diǎn)擊工具按鈕時(shí)觸發(fā)的信號(hào)。參數(shù) checked 表示按鈕的選中狀態(tài)。
- void triggered(QAction *action):當(dāng)有菜單項(xiàng)被觸發(fā)時(shí),發(fā)送該信號(hào)??梢允褂?action 參數(shù)來(lái)獲取觸發(fā)的菜單項(xiàng)。
使用信號(hào)和槽機(jī)制,可以通過(guò)連接 QToolButton 的 clicked 信號(hào)和自定義的槽函數(shù)來(lái)響應(yīng)按鈕的點(diǎn)擊事件。例如:
QObject::connect(toolButton, &QToolButton::clicked, [&]() { // 工具按鈕點(diǎn)擊事件的邏輯處理 });
通過(guò)連接 clicked()
信號(hào),可以在工具按鈕被點(diǎn)擊時(shí)執(zhí)行相關(guān)的操作或邏輯處理。
QToolButton
提供了許多其他的函數(shù)和屬性,用于設(shè)置按鈕的圖標(biāo)、文本、樣式和彈出菜單等,以滿足在用戶界面中提供快捷訪問(wèn)命令或選項(xiàng)的需求。根據(jù)具體需求,可以使用這些函數(shù)和屬性對(duì) QToolButton
進(jìn)行定制和擴(kuò)展。
示例
以下是一個(gè)簡(jiǎn)單的 QToolButton 的示例代碼,展示了如何創(chuàng)建一個(gè)工具按鈕并處理其點(diǎn)擊事件:
#include <QApplication> #include <QMainWindow> #include <QToolButton> #include <QMessageBox> int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow window; window.setWindowTitle("toolBtn"); // 創(chuàng)建一個(gè)工具按鈕 QToolButton *toolButton = new QToolButton(&window); toolButton->setText("Click me"); // 設(shè)置按鈕顯示的文本 // 連接按鈕的 clicked 信號(hào)和槽函數(shù) QObject::connect(toolButton, &QToolButton::clicked, [&]() { QMessageBox::information(&window, "Clicked", "Button has been clicked!"); }); // 將具按鈕添加到主窗口的工具欄 QToolBar *pBar = window.addToolBar("bar"); pBar->addWidget(toolButton); window.show(); return app.exec(); }
效果
在這個(gè)示例中,創(chuàng)建了一個(gè)簡(jiǎn)單的 QMainWindow 窗口,并在窗口上添加了一個(gè)帶有文本 “Click me” 的工具按鈕。
然后,通過(guò)連接工具按鈕的 clicked 信號(hào)和一個(gè) lambda 函數(shù),當(dāng)按鈕被點(diǎn)擊時(shí),會(huì)彈出一個(gè)消息框顯示"Button has been clicked!"的信息。
到此這篇關(guān)于Qt控件之QToolButton的使用及示例的文章就介紹到這了,更多相關(guān)Qt QToolButton內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言簡(jiǎn)明講解三目運(yùn)算符和逗號(hào)表達(dá)式的使用
三目運(yùn)算符,又稱條件運(yùn)算符,它是唯一有3個(gè)操作數(shù)的運(yùn)算符,有時(shí)又稱為三元運(yùn)算符。三目運(yùn)算符的結(jié)合性是右結(jié)合的;逗號(hào)表達(dá)式,是c語(yǔ)言中的逗號(hào)運(yùn)算符,優(yōu)先級(jí)別最低,它將兩個(gè)及其以上的式子聯(lián)接起來(lái),從左往右逐個(gè)計(jì)算表達(dá)式,整個(gè)表達(dá)式的值為最后一個(gè)表達(dá)式的值2022-04-04Qt事件過(guò)濾實(shí)現(xiàn)點(diǎn)擊圖片的放大和縮小
這篇文章主要為大家詳細(xì)介紹了Qt事件過(guò)濾實(shí)現(xiàn)點(diǎn)擊圖片的放大和縮小,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08c/c++獲取系統(tǒng)時(shí)間函數(shù)的方法示例
這篇文章主要介紹了c/c++獲取系統(tǒng)時(shí)間函數(shù)的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02