QPushButton 類

QPushButton 小部件提供命令按鈕。 更多...

頭: #include <QPushButton>
qmake: QT += widgets
繼承: QAbstractButton
繼承者:

QCommandLinkButton

特性

公共函數

QPushButton (const QIcon & icon , const QString & text , QWidget * parent = nullptr)
QPushButton (const QString & text , QWidget * parent = nullptr)
QPushButton (QWidget * parent = nullptr)
virtual ~QPushButton ()
bool autoDefault () const
bool isDefault () const
bool isFlat () const
QMenu * menu () const
void setAutoDefault ( bool )
void setDefault ( bool )
void setFlat ( bool )
void setMenu (QMenu * menu )

重實現公共函數

virtual QSize minimumSizeHint () const override
virtual QSize sizeHint () const override

公共槽

void showMenu ()

保護函數

void initStyleOption (QStyleOptionButton * option ) const

重實現保護函數

virtual bool event (QEvent * e ) override
virtual void focusInEvent (QFocusEvent * e ) override
virtual void focusOutEvent (QFocusEvent * e ) override
virtual bool hitButton (const QPoint & pos ) const override
virtual void keyPressEvent (QKeyEvent * e ) override
virtual void paintEvent ( QPaintEvent * ) override

詳細描述

按鈕 (或命令按鈕) 或許是任何圖形用戶界麵中最常用的 Widget。按下 (點擊) 按鈕以命令計算機履行某些動作或迴答問題。典型按鈕有 OK、Apply、Cancel、Close、Yes、No 及 Help。

命令按鈕為矩形且通常顯示描述其動作的文本標簽。可以通過在文本首選字符前麵加上 & 和號來指定快捷鍵。例如:

QPushButton *button = new QPushButton("&Download", this);
					

在此範例中快捷方式是 Alt+D 。見 QShortcut 文檔編製瞭解細節 (要顯示實際和號,使用 &&)。

按鈕顯示正文標簽和可選小圖標。這些可以使用構造函數設置和以後更改使用 setText () 和 setIcon ()。若按鈕被禁用,將根據 GUI 風格操縱文本和圖標的外觀,以使按鈕外觀成為被禁用。

按鈕發射信號 clicked () 當通過鼠標、空格鍵或鍵盤快捷方式激活它時。連接到此信號以履行按鈕的動作。按鈕還提供不太常用信號,例如 pressed () 和 released ().

默認情況下,對話框中的命令按鈕是自動默認按鈕 (即:它們會自動變為默認按鈕當收到鍵盤輸入聚焦時)。默認按鈕是被激活的按鈕當用戶在對話框中按 Enter 或 Return 鍵時。可以改變這采用 setAutoDefault ()。注意,自動默認按鈕會預留一點額外空間,這是繪製默認按鈕指示器所必需的。若不希望此空間圍繞在按鈕周圍,調用 setAutoDefault (false).

由於如此重要,過去十年間按鈕 Widget 已發展適應許多變化。微軟風格指南現在展示約 10 種不同 Windows 按鈕狀態,文本還隱含一打以上狀態當考慮所有特徵組閤時。

最重要的模式 (或狀態):

  • 可用或不可用 (變灰,被禁用)。
  • 標準按鈕、觸發按鈕或菜單按鈕。
  • 開啓或關閉 (僅用於觸發按鈕)。
  • 默認或正常。通常可以使用 Enter 或 Return 鍵點擊對話框中的默認按鈕。
  • 是否自動重復。
  • 是否被按下。

作為一般規則,使用按鈕當用戶點擊應用程序 (或對話框窗口) 履行動作時 (如:應用、取消、關閉和幫助) and 當 Widget 被假定擁有帶文本標簽的寬矩形形狀時。通常,更改窗口狀態而不是履行動作的較小方形按鈕 (如:右上角按鈕在 QFileDialog ) 不是命令按鈕,而是工具按鈕。Qt 提供特殊類 ( QToolButton ) 為這些按鈕。

若需要觸發行為 (見 setCheckable ()) 或像滾動條中箭頭當被按下時自動重復激活信號的按鈕 (見 setAutoRepeat ()),命令按鈕可能不是您想要的。如有疑問,使用工具按鈕。

注意: 在 macOS,當按鈕寬度小於 50 (或高度小於 30) 時,按鈕角由圓形變為方形。使用 setMinimumSize () 函數能阻止此行為。

命令按鈕的變體是菜單按鈕。它們僅僅提供一個命令而是多個命令,由於點擊它們時會彈齣選項菜單。使用方法 setMenu () 關聯彈齣菜單與按鈕。

其它種類的按鈕:選項按鈕 (見 QRadioButton ) 和復選框 (見 QCheckBox ).

在 Qt 中, QAbstractButton 基類提供大多數模式和其它 API,而 QPushButton 提供 GUI 邏輯。見 QAbstractButton 瞭解有關 API 的更多信息。

另請參閱 QToolButton , QRadioButton , QCheckBox ,和 GUI 設計手冊:按鈕 .

特性文檔編製

autoDefault : bool

此特性保持按鈕是否為自動默認按鈕

若把此特性設為 true,那麼按鈕是自動默認按鈕。

在某些 GUI 風格,默認按鈕周圍會繪製最多 3 像素或更多像素的額外框架。Qt 會在自動默認按鈕周圍自動保持這種空間自動,即:自動默認按鈕可能擁有稍微大點的大小提示。

此特性默認為 true 若按鈕擁有 QDialog 父級;否則默認為 false。

default 特性瞭解細節對於如何 default 和自動交互默認。

訪問函數:

bool autoDefault () const
void setAutoDefault ( bool )

default : bool

此特性保持按鈕是否為默認按鈕

默認和自動默認按鈕決定發生什麼,當用戶在對話框中按下 Enter 鍵時。

將此特性設為 true 的按鈕 (即:對話框的 default 按鈕),會被自動按下當用戶按下 Enter 鍵時,有一例外:若 autoDefault 按鈕目前有聚焦, autoDefault 按鈕被按下。當對話框有 autoDefault 按鈕但沒有默認按鈕,按下 Enter 鍵將按下 autoDefault 按鈕 (目前有聚焦),或者若沒有按鈕有聚焦,按下下一 autoDefault 聚焦鏈按鈕。

在對話框中,一次隻可以有一個按鈕是默認按鈕。那麼,此按鈕將顯示額外框架 (從屬 GUI 風格)。

默認按鈕行為僅在對話框提供。始終可以通過按下鍵盤空格鍵點擊按鈕,當按鈕有聚焦時。

若把可見對話框的當前默認按鈕的默認特性設為 false,當對話框下次收到聚焦時,將自動賦值給新的默認按鈕。

此特性默認為 false。

訪問函數:

bool isDefault () const
void setDefault ( bool )

flat : bool

此特性保持按鈕邊框是否凸起

此特性默認為 false。若有設置此特性,大多數風格不會繪製按鈕背景,除非按鈕被按下。 setAutoFillBackground () 可以用於確保背景被填充使用 QPalette::Button 筆刷。

訪問函數:

bool isFlat () const
void setFlat ( bool )

成員函數文檔編製

QPushButton:: QPushButton (const QIcon & icon , const QString & text , QWidget * parent = nullptr)

構造按鈕采用 icon text ,和 parent .

注意:也可以傳遞 QPixmap 對象作為圖標 (感謝由 C++ 提供的隱式類型轉換)。

QPushButton:: QPushButton (const QString & text , QWidget * parent = nullptr)

構造按鈕采用父級 parent 和文本 text .

QPushButton:: QPushButton ( QWidget * parent = nullptr)

構造按鈕沒有文本和 parent .

[slot] void QPushButton:: showMenu ()

展示 (彈齣) 關聯的彈齣菜單。若沒有這種菜單,此函數什麼都不做。此函數直到用戶關閉彈齣菜單後纔返迴。

[虛擬] QPushButton:: ~QPushButton ()

銷毀按鈕。

[override virtual protected] bool QPushButton:: event ( QEvent * e )

重實現: QAbstractButton::event (QEvent *e).

[override virtual protected] void QPushButton:: focusInEvent ( QFocusEvent * e )

重實現: QAbstractButton::focusInEvent (QFocusEvent *e).

[override virtual protected] void QPushButton:: focusOutEvent ( QFocusEvent * e )

重實現: QAbstractButton::focusOutEvent (QFocusEvent *e).

[override virtual protected] bool QPushButton:: hitButton (const QPoint & pos ) const

重實現: QAbstractButton::hitButton (const QPoint &pos) const.

[protected] void QPushButton:: initStyleOption ( QStyleOptionButton * option ) const

初始化 option 采用值來自此 QPushButton 。此方法對子類是有用的,當需要 QStyleOptionButton ,但不希望自己填充所有信息。

另請參閱 QStyleOption::initFrom ().

[override virtual protected] void QPushButton:: keyPressEvent ( QKeyEvent * e )

重實現: QAbstractButton::keyPressEvent (QKeyEvent *e).

返迴按鈕的關聯彈齣菜單或 nullptr 若未設置彈齣菜單。

另請參閱 setMenu ().

[override virtual] QSize QPushButton:: minimumSizeHint () const

重實現訪問函數為特性: QWidget::minimumSizeHint .

[override virtual protected] void QPushButton:: paintEvent ( QPaintEvent * )

重實現: QAbstractButton::paintEvent (QPaintEvent *e).

void QPushButton:: setMenu ( QMenu * menu )

關聯彈齣菜單 menu 與此按鈕。這把按鈕變成菜單按鈕,在某些風格中按鈕文本右側會産生小三角形。

菜單的所有權 not 被傳輸給按鈕。

Screenshot of a Fusion style push button with popup menu.

展示帶彈齣菜單的按鈕在 Fusion 小部件風格 .

另請參閱 menu ().

[override virtual] QSize QPushButton:: sizeHint () const

重實現訪問函數為特性: QWidget::sizeHint .