QAbstractButton 类是按钮 Widget 抽象基类,为按钮提供公共功能。 更多...
头: | #include <QAbstractButton> |
CMake: |
find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
继承: | QWidget |
继承者: |
|
QAbstractButton (QWidget * parent = nullptr) | |
virtual | ~QAbstractButton () |
bool | autoExclusive () const |
bool | autoRepeat () const |
int | autoRepeatDelay () const |
int | autoRepeatInterval () const |
QButtonGroup * | group () const |
QIcon | icon () const |
QSize | iconSize () const |
bool | isCheckable () const |
bool | isChecked () const |
bool | isDown () const |
void | setAutoExclusive (bool) |
void | setAutoRepeat (bool) |
void | setAutoRepeatDelay (int) |
void | setAutoRepeatInterval (int) |
void | setCheckable (bool) |
void | setDown (bool) |
void | setIcon (const QIcon & icon ) |
void | setShortcut (const QKeySequence & key ) |
void | setText (const QString & text ) |
QKeySequence | shortcut () const |
QString | text () const |
void | animateClick () |
void | click () |
void | setChecked (bool) |
void | setIconSize (const QSize & size ) |
void | toggle () |
void | clicked (bool checked = false) |
void | pressed () |
void | released () |
void | toggled (bool checked ) |
virtual void | checkStateSet () |
virtual bool | hitButton (const QPoint & pos ) const |
virtual void | nextCheckState () |
virtual void | changeEvent (QEvent * e ) override |
virtual bool | event (QEvent * e ) override |
virtual void | focusInEvent (QFocusEvent * e ) override |
virtual void | focusOutEvent (QFocusEvent * e ) override |
virtual void | keyPressEvent (QKeyEvent * e ) override |
virtual void | keyReleaseEvent (QKeyEvent * e ) override |
virtual void | mouseMoveEvent (QMouseEvent * e ) override |
virtual void | mousePressEvent (QMouseEvent * e ) override |
virtual void | mouseReleaseEvent (QMouseEvent * e ) override |
virtual void | paintEvent (QPaintEvent * e ) override = 0 |
virtual void | timerEvent (QTimerEvent * e ) override |
此类实现 abstract 按钮。此类的子类处理用户动作,并指定如何绘制按钮。
QAbstractButton 为按钮和可复选 (触发) 按钮提供支持。可复选按钮的实现在 QRadioButton and QCheckBox 类。按钮的实现在 QPushButton and QToolButton 类;这些还提供触发行为若有要求。
任何按钮都可以显示包含文本和图标的标签。 setText () 设置文本; setIcon () 设置图标。若按钮被禁用,将改变其标签以赋予按钮禁用外观。
若按钮是具有包含和号 & 字符串的文本按钮,QAbstractButton 会自动创建快捷键。例如:
QPushButton *button = new QPushButton(tr("Ro&ck && Roll"), this);
The Alt+C 快捷方式被赋值给按钮,即:当用户按下 Alt+C 按钮会调用 animateClick ()。见 QShortcut 文档编制了解细节。要显示实际和号,使用 &&。
还可以设置自定义快捷键使用 setShortcut () 函数。这对于没有任何文本的按钮非常有用,因此不可以有任何自动快捷方式。
button->setIcon(QIcon(":/images/print.png")); button->setShortcut(tr("Alt+F7"));
由 Qt 提供的所有按钮 ( QPushButton , QToolButton , QCheckBox ,和 QRadioButton ) 均可以显示 text and icons .
可以把按钮设为对话框默认按钮通过 QPushButton::setDefault () 和 QPushButton::setAutoDefault ().
QAbstractButton 提供用于按钮的大多数状态:
注意: 与其它 Widget 相反,按钮派生自 QAbstractButton 接受鼠标和上下文菜单事件当被禁用时。
差异在 isDown () 和 isChecked () 如下所示。当用户点击触发按钮以复选时,按钮首先 pressed 然后释放到 checked 状态。当用户再次点击它 (以取消复选) 时,按钮先被移到 pressed 状态,然后到 unchecked 状态 ( isChecked () 和 isDown () 两者为 false)。
QAbstractButton 提供 4 个信号:
要子类 QAbstractButton,必须至少重实现 paintEvent () 以绘制按钮轮廓及其文本或像素图。通常明智的是重实现 sizeHint (),且有时是 hitButton () (以确定按钮按下是否在按钮内)。对于具有 2 种以上状态的按钮 (像 3 状态按钮),还必须重实现 checkStateSet () 和 nextCheckState ().
另请参阅 QButtonGroup .
此特性保持是否启用自动独占
若自动独占被启用,属于同一父级 Widget 的可复选按钮的行为就像它们属于同一独占按钮组。在独占按钮组中,任何时候只能复选一按钮;复选另一按钮,自动取消复选先前复选的按钮。
特性对属于按钮组的按钮,不起作用。
默认情况下,autoExclusive (自动独占) 是关闭的,除单选按钮外。
访问函数:
bool | autoExclusive () const |
void | setAutoExclusive (bool) |
另请参阅 QRadioButton .
此特性保持是否启用 autoRepeat
若 autoRepeat 被启用,那么 pressed (), released (),和 clicked () 信号将按定期间隔发射当按钮被按下时。autoRepeat 默认情况下是关闭的。初始延迟和重复间隔以毫秒为单位定义通过 autoRepeatDelay and autoRepeatInterval .
注意:若按钮被快捷键按下,那么自动重复是被系统而不是此类启用和计时。 pressed (), released (),和 clicked () 信号将像在正常情况下一样被发射。
访问函数:
bool | autoRepeat () const |
void | setAutoRepeat (bool) |
此特性保持自动重复的初始延迟
若 autoRepeat 被启用,那么 autoRepeatDelay 定义在自动重复反冲之前的初始延迟 (以毫秒为单位)。
访问函数:
int | autoRepeatDelay () const |
void | setAutoRepeatDelay (int) |
另请参阅 autoRepeat and autoRepeatInterval .
此特性保持自动重复的间隔
若 autoRepeat 被启用,autoRepeatInterval 将定义自动重复间隔的长度 (以毫秒为单位)。
访问函数:
int | autoRepeatInterval () const |
void | setAutoRepeatInterval (int) |
另请参阅 autoRepeat and autoRepeatDelay .
此特性保持按钮是否可复选
默认情况下,按钮是不可复选的。
访问函数:
bool | isCheckable () const |
void | setCheckable (bool) |
另请参阅 checked .
此特性保持按钮是否被复选
仅可复选按钮才可以被复选。默认情况下,按钮是取消复选的。
访问函数:
bool | isChecked () const |
void | setChecked (bool) |
通知程序信号:
void | toggled (bool checked ) |
另请参阅 checkable .
此特性保持按钮是否被按下
若此特性为
true
,按钮被按下。信号
pressed
() 和
clicked
() 不被发射若将此特性设为 true。默认为 false。
访问函数:
bool | isDown () const |
void | setDown (bool) |
此特性保持在按钮上展示的图标
图标的默认大小由 GUI 样式定义,但可以调节通过设置 iconSize 特性。
访问函数:
QIcon | icon () const |
void | setIcon (const QIcon & icon ) |
此特性保持用于此按钮的图标尺寸。
默认大小由 GUI 样式定义。这是图标的最大尺寸。不会按比例放大较小图标。
访问函数:
QSize | iconSize () const |
void | setIconSize (const QSize & size ) |
此特性保持按钮关联的助记符
访问函数:
QKeySequence | shortcut () const |
void | setShortcut (const QKeySequence & key ) |
此特性保持按钮中展示的文本
若按钮没有文本,text() 函数将返回空字符串。
若文本包含 & 和号字符,则会自动为其创建快捷方式。紧跟 & 之后的字符将用作快捷键。将覆写 (或清零) 任何先前快捷方式,若文本未定义快捷方式。见 QShortcut 文档编制了解细节。要显示实际和号,使用 &&。
没有默认文本。
访问函数:
QString | text () const |
void | setText (const QString & text ) |
[explicit]
QAbstractButton::
QAbstractButton
(
QWidget
*
parent
= nullptr)
构造抽象按钮采用 parent .
[virtual noexcept]
QAbstractButton::
~QAbstractButton
()
销毁按钮。
[slot]
void
QAbstractButton::
animateClick
()
履行动画点击:按钮被立即按下,并在 100 毫秒后释放。
在按钮被释放之前,再次调用此函数会重置释放计时器。
会酌情发射点击关联的所有信号。
此函数什么都不做若按钮 disabled.
另请参阅 click ().
[override virtual protected]
void
QAbstractButton::
changeEvent
(
QEvent
*
e
)
重实现: QWidget::changeEvent (QEvent *event).
[virtual protected]
void
QAbstractButton::
checkStateSet
()
调用此虚拟处理程序当 setChecked () 有使用,除非调用它从 nextCheckState ()。它允许子类重置它们的中间按钮状态。
另请参阅 nextCheckState ().
[slot]
void
QAbstractButton::
click
()
履行点击。
与点击关联的所有寻常信号都会适当发射。若按钮可复选,触发按钮状态。
此函数什么都不做若按钮 disabled.
另请参阅 animateClick ().
[signal]
void
QAbstractButton::
clicked
(
bool
checked
= false)
此信号被发射当被激活 (即:按下然后释放当鼠标光标在按钮内时) 时,当键入快捷键时,或当 click () 或 animateClick () 被调用。显而易见,此信号 not 被发射若调用 setDown (), setChecked () 或 toggle ().
若按钮是可复选的, checked 为 true 若按钮被复选,或 false 若按钮未被复选。
另请参阅 pressed (), released (),和 toggled ().
[override virtual protected]
bool
QAbstractButton::
event
(
QEvent
*
e
)
重实现: QWidget::event (QEvent *event).
[override virtual protected]
void
QAbstractButton::
focusInEvent
(
QFocusEvent
*
e
)
重实现: QWidget::focusInEvent (QFocusEvent *event).
[override virtual protected]
void
QAbstractButton::
focusOutEvent
(
QFocusEvent
*
e
)
重实现: QWidget::focusOutEvent (QFocusEvent *event).
返回此按钮所属的组。
若按钮不是成员对于任何
QButtonGroup
,此函数返回
nullptr
.
另请参阅 QButtonGroup .
[virtual protected]
bool
QAbstractButton::
hitButton
(const
QPoint
&
pos
) const
返回
true
if
pos
在可点击按钮矩形内;否则返回
false
.
默认情况下,可点击区域是整个 Widget。子类可以重实现此函数,以提供不同形状和大小的可点击区域支持。
[override virtual protected]
void
QAbstractButton::
keyPressEvent
(
QKeyEvent
*
e
)
重实现: QWidget::keyPressEvent (QKeyEvent *event).
[override virtual protected]
void
QAbstractButton::
keyReleaseEvent
(
QKeyEvent
*
e
)
重实现: QWidget::keyReleaseEvent (QKeyEvent *event).
[override virtual protected]
void
QAbstractButton::
mouseMoveEvent
(
QMouseEvent
*
e
)
重实现: QWidget::mouseMoveEvent (QMouseEvent *event).
[override virtual protected]
void
QAbstractButton::
mousePressEvent
(
QMouseEvent
*
e
)
重实现: QWidget::mousePressEvent (QMouseEvent *event).
[override virtual protected]
void
QAbstractButton::
mouseReleaseEvent
(
QMouseEvent
*
e
)
重实现: QWidget::mouseReleaseEvent (QMouseEvent *event).
[virtual protected]
void
QAbstractButton::
nextCheckState
()
调用此虚拟处理程序,当点击按钮时。默认实现调用 setChecked (! isChecked ()) 若按钮 isCheckable ()。它允许子类实现中间按钮状态。
另请参阅 checkStateSet ().
[override pure virtual protected]
void
QAbstractButton::
paintEvent
(
QPaintEvent
*
e
)
重实现: QWidget::paintEvent (QPaintEvent *event).
[signal]
void
QAbstractButton::
pressed
()
此信号被发射当按钮被按下。
另请参阅 released () 和 clicked ().
[signal]
void
QAbstractButton::
released
()
此信号被发射当按钮被释放。
另请参阅 pressed (), clicked (),和 toggled ().
[override virtual protected]
void
QAbstractButton::
timerEvent
(
QTimerEvent
*
e
)
重实现: QObject::timerEvent (QTimerEvent *event).
[slot]
void
QAbstractButton::
toggle
()
切换可复选按钮的状态。
另请参阅 checked .
[signal]
void
QAbstractButton::
toggled
(
bool
checked
)
此信号被发射,每当可复选按钮改变其状态时。 checked 为 true 若按钮被复选,或 false 若按钮未被复选。
这可能是用户动作的结果, click () 槽被激活,或因为 setChecked () 被调用。
在发射此信号之前,会更新独占按钮组中的按钮状态。这意味着槽可以充当状态有变化组中的按钮,发射的 off 信号或 on 信号。
例如,可以使用以下模式实现由新近复选按钮发射的信号做出反应,但忽略来自未复选按钮的信号的槽:
void MyWidget::reactToToggle(bool checked) { if (checked) { // Examine the new button states. ... } }
按钮组的创建可以使用 QButtonGroup 类,并更新按钮状态监视采用 QButtonGroup::buttonClicked () 信号。
注意: 通知程序信号对于特性 checked .