簡述
QToolButton類提供了用於命令或選項可以快速訪問的按鈕,通常可以用在QToolBar里面。
工具按鈕和普通的命令按鈕不同,通常不顯示文本,而顯示圖標。
詳細描述
當使用QToolBar::addAction()添加一個新的(或已存在的)QAction至工具欄時,工具按鈕通常被創建 。也可以用同樣的方式構建工具按鈕和其它部件,並設置它們的布局。
QToolButton支持自動浮起,在自動浮起模式中,只有在鼠標指向它的時候才繪制三維框架。當按鈕被用在QToolBar里時,這個特征會被自動啟用,可以使用setAutoRaise()來改變。
按鈕的外觀和尺寸可通過setToolButtonStyle()和setIconSize()來調節。當在QMainWindow的QToolBar里使用時,按鈕會自動地調節來適合QMainWindow的設置(見QMainWindow::setToolButtonStyle() 和QMainWindow::setIconSize())。
工具按鈕可以提供一個彈出菜單,使用setMenu()來進行設置。通過setPopupMode()來設置菜單的彈出模式,缺省模式是DelayedPopupMode,這個特征有時對於網頁瀏覽器中的“后退”按鈕有用,在按下按鈕一段時間后,會彈出一個顯示所有可以后退瀏覽的可能頁面的菜單列表,默認延遲600毫秒,可以用setPopupDelay()進行調整。
常用接口
void setMenu(QMenu * menu)
設置按鈕的彈出菜單。和QPushButton用法類似,詳見:Qt之QPushButtonvoid setPopupMode(ToolButtonPopupMode mode)
設置彈出菜單的方式,默認情況下,設置為DelayedPopup(延遲彈出)。枚舉QToolButton::ToolButtonPopupMode:
常量 | 值 | 描述 |
---|---|---|
QToolButton::DelayedPopup | 0 | 按下按鈕一定時間后(超時風格依賴,參考:QStyle::SH_ToolButton_PopupDelay),顯示菜單。一個典型案例:瀏覽器中工具欄的“后退”按鈕。 |
QToolButton::MenuButtonPopup | 1 | 這種模式下,工具按鈕顯示一個特殊的箭頭以指示菜單是否存在,按下按鈕的箭頭部分時顯示菜單。 |
QToolButton::InstantPopup | 2 | 按下工具按鈕時菜單顯示,無延遲。這種模式下,按鈕自身的動作不觸發。 |
void setToolButtonStyle(Qt::ToolButtonStyle style)
設置按鈕風格,只顯示一個圖標,文本或文本位於圖標旁邊、下方。默認值是Qt::ToolButtonIconOnly。枚舉Qt::ToolButtonStyle:
常量 | 值 | 描述 |
---|---|---|
Qt::ToolButtonIconOnly | 0 | 只顯示圖標 |
Qt::ToolButtonTextOnly | 1 | 只顯示文本 |
Qt::ToolButtonTextBesideIcon | 2 | 文本顯示在圖標旁邊 |
Qt::ToolButtonTextUnderIcon | 3 | 文本顯示在圖標下邊 |
Qt::ToolButtonFollowStyle | 4 | 遵循QStyle::StyleHint |
void setArrowType(Qt::ArrowType type)
設置按鈕是否顯示一個箭頭,而不是一個正常的圖標。這將顯示一個箭頭作為QToolButton的圖標。
默認情況下,這個屬性被設置為Qt::NoArrow。枚舉Qt::ArrowType:
常量 | 值 |
---|---|
Qt::NoArrow | 0 |
Qt::UpArrow | 1 |
Qt::DownArrow | 2 |
Qt::LeftArrow | 3 |
Qt::RightArrow | 4 |
效果:
QToolButton *pButton = new QToolButton(this);
pButton->setArrowType(Qt::LeftArrow);
pButton->setText("Left Arrow");
// 文本位於圖標之下
pButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
pButton->setStyleSheet("QToolButton{border: none; background: rgb(68, 69, 73); color: rgb(0, 160, 230);}");
這里,我們可以通過樣式表color來設置圖標的顏色及文本色。
- void setDefaultAction(QAction * action)
設置默認的QAction,如果有一個默認的action,該action則會定義QToolButton的文本、圖標、TooTip等按鈕的屬性。
QAction *pAction = new QAction(this);
pAction->setText(QString::fromLocal8Bit("一去丶二三里"));
pAction->setIcon(QIcon(":/Images/logo"));
pButton->setIconSize(QSize(48, 48));
pAction->setToolTip(QString::fromLocal8Bit("青春不老,奮斗不止!"));
pButton->setDefaultAction(pAction);
pButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);