QToolButton Class
QToolButton 类提供了一个用于访问命令或选项的快捷按钮,通常用于QToolBar 中。更多内容...
| 头文件: | #include <QToolButton> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 继承自: | QAbstractButton |
公共类型
| enum | ToolButtonPopupMode { DelayedPopup, MenuButtonPopup, InstantPopup } |
属性
- arrowType : Qt::ArrowType
- autoRaise : bool
- popupMode : ToolButtonPopupMode
- toolButtonStyle : Qt::ToolButtonStyle
公共函数
| QToolButton(QWidget *parent = nullptr) | |
| virtual | ~QToolButton() |
| Qt::ArrowType | arrowType() const |
| bool | autoRaise() const |
| QAction * | defaultAction() const |
| QMenu * | menu() const |
| QToolButton::ToolButtonPopupMode | popupMode() const |
| void | setArrowType(Qt::ArrowType type) |
| void | setAutoRaise(bool enable) |
| void | setMenu(QMenu *menu) |
| void | setPopupMode(QToolButton::ToolButtonPopupMode mode) |
| Qt::ToolButtonStyle | toolButtonStyle() const |
重新实现的公共函数
| virtual QSize | minimumSizeHint() const override |
| virtual QSize | sizeHint() const override |
公共插槽
| void | setDefaultAction(QAction *action) |
| void | setToolButtonStyle(Qt::ToolButtonStyle style) |
| void | showMenu() |
信号
| void | triggered(QAction *action) |
受保护函数
| virtual void | initStyleOption(QStyleOptionToolButton *option) const |
重新实现的受保护函数
| virtual void | actionEvent(QActionEvent *event) override |
| virtual void | changeEvent(QEvent *e) override |
| virtual void | checkStateSet() override |
| virtual void | enterEvent(QEnterEvent *e) override |
| virtual bool | event(QEvent *event) override |
| virtual bool | hitButton(const QPoint &pos) const override |
| virtual void | leaveEvent(QEvent *e) override |
| virtual void | mousePressEvent(QMouseEvent *e) override |
| virtual void | mouseReleaseEvent(QMouseEvent *e) override |
| virtual void | nextCheckState() override |
| virtual void | paintEvent(QPaintEvent *event) override |
| virtual void | timerEvent(QTimerEvent *e) override |
详细说明
工具按钮是一种特殊按钮,可提供对特定命令或选项的快速访问。与普通命令按钮不同,工具按钮通常不显示文本标签,而是显示图标。
工具按钮通常在通过QToolBar::addAction()创建新的QAction 实例时生成,或者通过QToolBar::addAction()将现有操作添加到工具栏时生成。此外,也可以像构建其他小部件一样构建工具按钮,并在布局中与其他小部件并排排列。
工具按钮的一个经典用途是选择工具;例如,绘图程序中的“钢笔”工具。这可以通过将 QToolButton 作为切换按钮来实现(参见setCheckable())。
QToolButton 支持自动凸起功能。在自动凸起模式下,只有当鼠标悬停在按钮上时,按钮才会绘制 3D 边框。当按钮在QToolBar 中使用时,该功能会自动启用。可通过setAutoRaise() 进行更改。
工具按钮的图标设置为QIcon 。这使得可以为禁用状态和活动状态指定不同的位图。当按钮功能不可用时,使用禁用状态的位图;当鼠标指针悬停在按钮上导致按钮自动凸起时,则显示活动状态的位图。
可通过setToolButtonStyle()和setIconSize()调整按钮的外观和尺寸。当该按钮位于QMainWindow 中的QToolBar 内时,会自动适应QMainWindow 的设置(参见QMainWindow::setToolButtonStyle()和QMainWindow::setIconSize())。除了图标外,工具按钮还可以显示箭头符号,通过arrowType 进行指定。
工具按钮可在弹出菜单中提供更多选项。可通过setMenu() 设置弹出菜单。使用setPopupMode() 可配置带有菜单集的工具按钮的各种可用模式。 默认模式为 DelayedPopupMode,该模式有时用于 Web 浏览器中的“返回”按钮。按住该按钮一段时间后,会弹出一个菜单,显示可跳转的页面列表。超时时间取决于样式,请参阅QStyle::SH_ToolButton_PopupDelay 。
Qt Assistant 工具栏" src="images/assistant-toolbar.png" title="带有工具按钮的 Qt Assistant 工具栏"/>
Qt Assistant的工具栏包含与主窗口其他部分中使用的操作相关联的工具按钮。
另请参阅 QPushButton 、QToolBar 、QMainWindow 以及QAction 。
成员类型文档
enum QToolButton::ToolButtonPopupMode
描述了当工具按钮具有菜单集或包含操作列表时,应如何弹出菜单。
| 常量 | 值 | 描述 |
|---|---|---|
QToolButton::DelayedPopup | 0 | 长按工具按钮一段时间后(超时时间取决于样式,请参见QStyle::SH_ToolButton_PopupDelay ),将显示菜单。 一个典型的应用示例是某些 Web 浏览器工具栏中的“返回”按钮。如果用户单击该按钮,浏览器只会返回上一页。如果用户按住该按钮一段时间,该工具按钮会显示一个包含当前历史记录列表的菜单 |
QToolButton::MenuButtonPopup | 1 | 在此模式下,工具按钮会显示一个特殊的箭头,以表明存在菜单。当按下按钮的箭头部分时,菜单便会显示。 |
QToolButton::InstantPopup | 2 | 按下工具按钮时,菜单会立即显示。在此模式下,不会触发按钮本身的操作。 |
属性文档
arrowType : Qt::ArrowType
该属性用于控制按钮是否显示箭头而非普通图标
此属性将箭头作为“QToolButton ”的图标显示。
默认情况下,此属性设置为Qt::NoArrow 。
访问函数:
| Qt::ArrowType | arrowType() const |
| void | setArrowType(Qt::ArrowType type) |
autoRaise : bool
无论是否启用了自动提升,此属性均有效。
默认情况下该属性处于禁用状态(即 false)。
在 macOS 上使用 QMacStyle 时,该属性目前会被忽略。
访问函数:
| bool | autoRaise() const |
| void | setAutoRaise(bool enable) |
popupMode : ToolButtonPopupMode
描述了弹出菜单与工具按钮的配合使用方式
默认情况下,此属性设置为DelayedPopup 。
访问函数:
| QToolButton::ToolButtonPopupMode | popupMode() const |
| void | setPopupMode(QToolButton::ToolButtonPopupMode mode) |
toolButtonStyle : Qt::ToolButtonStyle
该属性用于控制工具按钮是仅显示图标、仅显示文本,还是在图标旁边或下方显示文本。
默认值为Qt::ToolButtonIconOnly 。
若要使工具按钮的样式遵循系统设置,请将此属性设置为Qt::ToolButtonFollowStyle 。在 Unix 系统上,将使用桌面环境中的用户设置。在其他平台上,Qt::ToolButtonFollowStyle 表示仅显示图标。
QToolButton 会自动将此插槽连接到其所属QMainWindow 中相应的信号。
访问函数:
| Qt::ToolButtonStyle | toolButtonStyle() const |
| void | setToolButtonStyle(Qt::ToolButtonStyle style) |
成员函数文档
[explicit] QToolButton::QToolButton(QWidget *parent = nullptr)
创建一个父级为parent 的空工具按钮。
[virtual noexcept] QToolButton::~QToolButton()
销毁该对象并释放所有已分配的资源。
[override virtual protected] void QToolButton::actionEvent(QActionEvent *event)
重写了:QWidget::actionEvent(QActionEvent *event)。
[override virtual protected] void QToolButton::changeEvent(QEvent *e)
重写了:QAbstractButton::changeEvent(QEvent *e)。
[override virtual protected] void QToolButton::checkStateSet()
重写了:QAbstractButton::checkStateSet()。
QAction *QToolButton::defaultAction() const
返回默认操作。
另请参阅 setDefaultAction()。
[override virtual protected] void QToolButton::enterEvent(QEnterEvent *e)
重写了:QWidget::enterEvent(QEnterEvent *event)。
[override virtual protected] bool QToolButton::event(QEvent *event)
重写了:QAbstractButton::event(QEvent *e)。
[override virtual protected] bool QToolButton::hitButton(const QPoint &pos) const
重写了:QAbstractButton::hitButton(const QPoint &pos) const。
[virtual protected] void QToolButton::initStyleOption(QStyleOptionToolButton *option) const
使用QToolButton 中的值初始化option 。当子类需要一个QStyleOptionToolButton ,但又不想自己填写所有信息时,此方法非常有用。
另请参阅 QStyleOption::initFrom()。
[override virtual protected] void QToolButton::leaveEvent(QEvent *e)
重写:QWidget::leaveEvent(QEvent *event)。
QMenu *QToolButton::menu() const
返回关联的菜单;如果未定义任何菜单,则返回nullptr 。
另请参阅 setMenu()。
[override virtual] QSize QToolButton::minimumSizeHint() const
重新实现了属性QWidget::minimumSizeHint 的访问函数。
[override virtual protected] void QToolButton::mousePressEvent(QMouseEvent *e)
重写了:QAbstractButton::mousePressEvent(QMouseEvent *e)。
[override virtual protected] void QToolButton::mouseReleaseEvent(QMouseEvent *e)
重写了:QAbstractButton::mouseReleaseEvent(QMouseEvent *e)。
[override virtual protected] void QToolButton::nextCheckState()
重写了:QAbstractButton::nextCheckState()。
[override virtual protected] void QToolButton::paintEvent(QPaintEvent *event)
重写:QAbstractButton::paintEvent(QPaintEvent *e)。
响应绘制事件event 时,对按钮进行绘制。
[slot] void QToolButton::setDefaultAction(QAction *action)
将默认操作设置为action 。
如果工具按钮具有默认操作,则该操作将定义按钮的以下属性:
其他属性(例如 `autoRepeat`)不受操作的影响。
另请参阅 defaultAction()。
void QToolButton::setMenu(QMenu *menu)
将给定的menu 与该工具按钮关联起来。
菜单将根据按钮的popupMode 显示。
菜单的所有权不会转移给该工具按钮。
另请参阅 menu()。
[slot] void QToolButton::showMenu()
显示(弹出)相应的弹出菜单。如果不存在此类菜单,则该函数不执行任何操作。在用户关闭弹出菜单之前,该函数不会返回。
[override virtual] QSize QToolButton::sizeHint() const
重新实现了属性QWidget::sizeHint 的访问函数。
[override virtual protected] void QToolButton::timerEvent(QTimerEvent *e)
重写了:QAbstractButton::timerEvent(QTimerEvent *e)。
[signal] void QToolButton::triggered(QAction *action)
当指定的action 被触发时,会发出此信号。
该操作还可以与用户界面的其他部分相关联,例如菜单项和键盘快捷键。通过这种方式共享操作有助于提高用户界面的统一性,且通常更易于实现。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.