QToolButton 类

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

详细描述

工具按钮是能对特定命令 (或选项) 提供快速访问的特殊按钮。

通常,工具按钮的创建是在新的 QAction 实例被创建采用 QToolBar::addAction () 或将现有动作添加到工具栏采用 QToolBar::addAction ()。以如任何其它 Widget 的相同方式构造工具按钮,并将它们同其它小部件一起排列在布局中是可能的。

工具按钮的一种经典用法是选择工具;例如,绘图程序中的 pen 工具。这将通过使用 QToolButton 作为切换按钮 来实现 (见 setCheckable ()).

QToolButton 支持自动上升。在自动上升模式下,按钮才绘制 3D 框架当鼠标指到它时。特征会自动打开当按钮用于 QToolBar 。改变它采用 setAutoRaise ().

工具按钮的图标被设为 QIcon 。这使之可能为禁用和活动状态,指定不同像素图。使用禁用像素图,当按钮功能不可用时。显示活动像素图,当因为鼠标指针悬停在活动像素图上时按钮会自动上升。

按钮外观和尺度的调节采用 setToolButtonStyle () 和 setIconSize ()。当用于 QToolBar QMainWindow ,按钮被自动调节到 QMainWindow 的设置 (见 QMainWindow::setToolButtonStyle () 和 QMainWindow::setIconSize ())。而不是图标,工具按钮还可以显示箭头符号,指定采用 arrowType .

工具按钮可以按弹出菜单方式提供额外选择。弹出菜单的设置可以使用 setMenu ()。使用 setPopupMode () 以配置可用于具有菜单设置的工具按钮的不同模式。默认模式为 DelayedPopupMode,有时用于 Web 浏览器的 "后退" 按钮。按住并保持按钮向下一段时间后,菜单弹出展示要跳转到的可能页面列表。超时从属样式,见 QStyle::SH_ToolButton_PopupDelay .

Qt Assistant's toolbar with tool buttons
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

初始化 option 采用值来自此 QToolButton 。此方法对子类是有用的,当需要 QStyleOptionToolButton ,但不希望自己填充所有信息。

另请参阅 QStyleOption::initFrom ().

[override virtual protected] void QToolButton:: leaveEvent ( QEvent * e )

重实现: QWidget::leaveEvent (QEvent *event).

Returns the associated menu, or nullptr if no menu has been defined.

另请参阅 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 被触发。

动作还可以关联用户界面的其它部分 (譬如:菜单项和键盘快捷键)。以这种方式共享动作有助于使用户界面更一致,且实现起来工作量经常更少。