QPushButton 類

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

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

特性

公共函數

QPushButton (QWidget * parent = nullptr)
QPushButton (const QString & text , QWidget * parent = nullptr)
QPushButton (const QIcon & icon , const QString & text , 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 ()

靜態公共成員

const QMetaObject staticMetaObject

保護函數

void initStyleOption (QStyleOptionButton * option ) const

重實現保護函數

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 paintEvent ( QPaintEvent * ) override

額外繼承成員

詳細描述

The QPushButton 小部件提供命令按鈕。

按鈕 (或命令按鈕) 或許是任何圖形用戶界麵中最常用的 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 ()),命令按鈕可能不是您想要的。如有疑問,使用工具按鈕。

注意: On macOS when a push button's width becomes smaller than 50 or its height becomes smaller than 30, the button's corners are changed from round to square. Use the 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 ( QWidget * parent = nullptr)

構造按鈕沒有文本和 parent .

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

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

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

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

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

[虛擬] QPushButton:: ~QPushButton ()

銷毀按鈕。

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

重實現自 QAbstractButton::event ().

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

重實現自 QAbstractButton::focusInEvent ().

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

重實現自 QAbstractButton::focusOutEvent ().

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

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

另請參閱 QStyleOption::initFrom ().

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

重實現自 QAbstractButton::keyPressEvent ().

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

另請參閱 setMenu ().

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

重實現自 QWidget::minimumSizeHint ().

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

重實現自 QAbstractButton::paintEvent ().

void QPushButton:: setMenu ( QMenu * menu )

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

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

Screenshot of a Fusion style push button with popup menu.

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

另請參閱 menu ().

[slot] void QPushButton:: showMenu ()

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

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

重實現自 QWidget::sizeHint ().