The QAbstractButton 類是按鈕 Widget 抽象基類,為按鈕提供公共功能。 更多...
| 頭: | #include <QAbstractButton> |
| qmake: | QT += widgets |
| 繼承: | QWidget |
| 繼承者: | QCheckBox , QPushButton , QRadioButton ,和 QToolButton |
|
| 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 (int msec = 100) |
| 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 ) |
| const QMetaObject | staticMetaObject |
| 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 |
The QAbstractButton 類是按鈕 Widget 抽象基類,為按鈕提供公共功能。
此類實現 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 定義在自動重復反衝之前的初始延遲 (以毫秒為單位)。
該特性在 Qt 4.2 引入。
訪問函數:
| int | autoRepeatDelay () const |
| void | setAutoRepeatDelay ( int ) |
另請參閱 autoRepeat and autoRepeatInterval .
此特性保持自動重復的間隔
若 autoRepeat 被啓用,autoRepeatInterval 將定義自動重復間隔的長度 (以毫秒為單位)。
該特性在 Qt 4.2 引入。
訪問函數:
| 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 ) |
構造抽象按鈕采用 parent .
[虛擬]
QAbstractButton::
~QAbstractButton
()
銷毀按鈕。
[slot]
void
QAbstractButton::
animateClick
(
int
msec
= 100)
履行動畫點擊:立即按下按鈕,然後釋放在 msec 毫秒後 (默認為 100 ms)。
在按鈕被釋放之前,再次調用此函數會重置釋放計時器。
會酌情發射點擊關聯的所有信號。
此函數什麼都不做若按鈕 disabled.
另請參閱 click ().
[override virtual protected]
void
QAbstractButton::
changeEvent
(
QEvent
*
e
)
重實現自 QWidget::changeEvent ().
[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 ().
[override virtual protected]
void
QAbstractButton::
focusInEvent
(
QFocusEvent
*
e
)
重實現自 QWidget::focusInEvent ().
[override virtual protected]
void
QAbstractButton::
focusOutEvent
(
QFocusEvent
*
e
)
重實現自 QWidget::focusOutEvent ().
返迴此按鈕所屬的組。
若按鈕不是成員對於任何
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 ().
[override virtual protected]
void
QAbstractButton::
keyReleaseEvent
(
QKeyEvent
*
e
)
重實現自 QWidget::keyReleaseEvent ().
[override virtual protected]
void
QAbstractButton::
mouseMoveEvent
(
QMouseEvent
*
e
)
重實現自 QWidget::mouseMoveEvent ().
[override virtual protected]
void
QAbstractButton::
mousePressEvent
(
QMouseEvent
*
e
)
重實現自 QWidget::mousePressEvent ().
[override virtual protected]
void
QAbstractButton::
mouseReleaseEvent
(
QMouseEvent
*
e
)
重實現自 QWidget::mouseReleaseEvent ().
[virtual protected]
void
QAbstractButton::
nextCheckState
()
調用此虛擬處理程序,當點擊按鈕時。默認實現調用 setChecked (! isChecked ()) 若按鈕 isCheckable ()。它允許子類實現中間按鈕狀態。
另請參閱 checkStateSet ().
[override pure virtual protected]
void
QAbstractButton::
paintEvent
(
QPaintEvent
*
e
)
重實現自 QWidget::paintEvent ().
[signal]
void
QAbstractButton::
pressed
()
此信號發射,當按下按鈕時。
另請參閱 released () 和 clicked ().
[signal]
void
QAbstractButton::
released
()
此信號發射,當釋放按鈕時。
另請參閱 pressed (), clicked (),和 toggled ().
[override virtual protected]
void
QAbstractButton::
timerEvent
(
QTimerEvent
*
e
)
重實現自 QObject::timerEvent ().
[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 .