本页内容

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 }

属性

公共函数

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 。

带有工具按钮的 <span translate=Qt Assistant 工具栏" src="images/assistant-toolbar.png" title="带有工具按钮的 Qt Assistant 工具栏"/>

Qt Assistant的工具栏包含与主窗口其他部分中使用的操作相关联的工具按钮。

另请参阅 QPushButton 、QToolBar 、QMainWindow 以及QAction 。

成员类型文档

enum QToolButton::ToolButtonPopupMode

描述了当工具按钮具有菜单集或包含操作列表时,应如何弹出菜单。

常量值描述
QToolButton::DelayedPopup0长按工具按钮一段时间后(超时时间取决于样式,请参见QStyle::SH_ToolButton_PopupDelay ),将显示菜单。 一个典型的应用示例是某些 Web 浏览器工具栏中的“返回”按钮。如果用户单击该按钮,浏览器只会返回上一页。如果用户按住该按钮一段时间,该工具按钮会显示一个包含当前历史记录列表的菜单
QToolButton::MenuButtonPopup1在此模式下,工具按钮会显示一个特殊的箭头,以表明存在菜单。当按下按钮的箭头部分时,菜单便会显示。
QToolButton::InstantPopup2按下工具按钮时,菜单会立即显示。在此模式下,不会触发按钮本身的操作。

属性文档

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)。

返回关联的菜单;如果未定义任何菜单,则返回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.