QAbstractButton 類

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 提供用於按鈕的大多數狀態:

差異在 isDown () 和 isChecked () 如下所示。當用戶點擊觸發按鈕以復選時,按鈕首先 pressed 然後釋放到 checked 狀態。當用戶再次點擊它 (以取消復選) 時,按鈕先被移到 pressed 狀態,然後到 unchecked 狀態 ( isChecked () 和 isDown () 兩者為 false)。

QAbstractButton 提供 4 個信號:

  1. pressed () 發射,當鼠標光標在按鈕內按下鼠標左鍵時。
  2. released () 發射,當釋放鼠標左鍵時。
  3. clicked () 發射當首次按下然後釋放按鈕時,當鍵入快捷鍵時或當 click () 或 animateClick () 被調用。
  4. toggled () 發射,當觸發按鈕狀態改變時。

要子類化 QAbstractButton ,必須至少重實現 paintEvent () 以繪製按鈕輪廓及其文本或像素圖。通常明智的是重實現 sizeHint (),且有時是 hitButton () (以確定按鈕按下是否在按鈕內)。對於具有 2 種以上狀態的按鈕 (像 3 狀態按鈕),還必須重實現 checkStateSet () 和 nextCheckState ().

另請參閱 QButtonGroup .

特性文檔編製

autoExclusive : bool

此特性保持是否啓用自動獨占

若自動獨占被啓用,屬於同一父級 Widget 的可復選按鈕的行為就像它們屬於同一獨占按鈕組。在獨占按鈕組中,任何時候隻能復選一按鈕;復選另一按鈕,自動取消復選先前復選的按鈕。

特性對屬於按鈕組的按鈕,不起作用。

默認情況下,autoExclusive (自動獨占) 是關閉的,除單選按鈕外。

訪問函數:

bool autoExclusive () const
void setAutoExclusive ( bool )

另請參閱 QRadioButton .

autoRepeat : bool

此特性保持是否啓用 autoRepeat

若 autoRepeat 被啓用,那麼 pressed (), released (),和 clicked () 信號將按定期間隔發射當按鈕被按下時。autoRepeat 默認情況下是關閉的。初始延遲和重復間隔以毫秒為單位定義通過 autoRepeatDelay and autoRepeatInterval .

注意:若按鈕被快捷鍵按下,那麼自動重復是被係統而不是此類啓用和計時。 pressed (), released (),和 clicked () 信號將像在正常情況下一樣被發射。

訪問函數:

bool autoRepeat () const
void setAutoRepeat ( bool )

autoRepeatDelay : int

此特性保持自動重復的初始延遲

autoRepeat 被啓用,那麼 autoRepeatDelay 定義在自動重復反衝之前的初始延遲 (以毫秒為單位)。

該特性在 Qt 4.2 引入。

訪問函數:

int autoRepeatDelay () const
void setAutoRepeatDelay ( int )

另請參閱 autoRepeat and autoRepeatInterval .

autoRepeatInterval : int

此特性保持自動重復的間隔

autoRepeat 被啓用,autoRepeatInterval 將定義自動重復間隔的長度 (以毫秒為單位)。

該特性在 Qt 4.2 引入。

訪問函數:

int autoRepeatInterval () const
void setAutoRepeatInterval ( int )

另請參閱 autoRepeat and autoRepeatDelay .

checkable : bool

此特性保持按鈕是否可復選

默認情況下,按鈕是不可復選的。

訪問函數:

bool isCheckable () const
void setCheckable ( bool )

另請參閱 checked .

checked : bool

此特性保持按鈕是否被復選

僅可復選按鈕纔可以被復選。默認情況下,按鈕是取消復選的。

訪問函數:

bool isChecked () const
void setChecked ( bool )

通知程序信號:

void toggled (bool checked )

另請參閱 checkable .

down : bool

此特性保持按鈕是否被按下

若此特性為 true ,按鈕被按下。信號 pressed () 和 clicked () 不發射,若將此特性設為 true。默認為 false。

訪問函數:

bool isDown () const
void setDown ( bool )

icon : QIcon

此特性保持在按鈕上展示的圖標

圖標的默認大小由 GUI 樣式定義,但可以調節通過設置 iconSize 特性。

訪問函數:

QIcon icon () const
void setIcon (const QIcon & icon )

iconSize : QSize

此特性保持用於此按鈕的圖標尺寸。

默認大小由 GUI 樣式定義。這是圖標的最大尺寸。不會按比例放大較小圖標。

訪問函數:

QSize iconSize () const
void setIconSize (const QSize & size )

shortcut : QKeySequence

此特性保持按鈕關聯的助記符

訪問函數:

QKeySequence shortcut () const
void setShortcut (const QKeySequence & key )

text : QString

此特性保持按鈕中展示的文本

若按鈕沒有文本,text() 函數將返迴空字符串。

若文本包含 & 和號字符,則會自動為其創建快捷方式。緊跟 & 之後的字符將用作快捷鍵。將覆寫 (或清零) 任何先前快捷方式,若文本未定義快捷方式。見 QShortcut 文檔編製瞭解細節。要顯示實際和號,使用 &&。

不存在默認文本。

訪問函數:

QString text () const
void setText (const QString & text )

成員函數文檔編製

QAbstractButton:: QAbstractButton ( QWidget * parent = nullptr)

構造抽象按鈕采用 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 *QAbstractButton:: group () const

返迴此按鈕所屬的組。

若按鈕不是成員對於任何 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 .

另請參閱 checked and clicked ().