檢視原始碼 wxButton (wx v2.4.3)

按鈕是一種包含文字字串的控制項,也是 GUI 中最常見的元素之一。

它可以放置在 wxDialogwxPanel 面板上,實際上幾乎可以放置在任何其他視窗上。

預設情況下,也就是說,如果未指定任何對齊樣式,則標籤會在水平和垂直方向上置中。如果按鈕同時具有標籤和點陣圖,則上面的對齊樣式會指定結合標籤和點陣圖的矩形的位置,而使用 wxButton::SetBitmapPosition() 設定的點陣圖位置(在 wx 中未實作)則定義了點陣圖相對於標籤的位置(但是,目前並非所有平台都實作了非預設的對齊組合)。

自 2.9.1 版本起,wxButton 支援同時顯示文字和圖像(目前僅在使用 wxMSW、wxGTK 或 wxOSX/Cocoa 連接埠時),請參閱 SetBitmap() (在 wx 中未實作)和 setBitmapLabel/2setBitmapDisabled/2 等方法。在先前的 wxWidgets 版本中,此功能僅在(現在是微不足道的)wxBitmapButton 類別中提供,該類別只能顯示沒有文字的圖像。

按鈕可以針對所有狀態使用單一圖像,也可以針對以下狀態使用不同的圖像(目前在 macOS 上不支援不同的圖像,其中所有狀態都使用正常圖像)

  • normal: 預設狀態

  • disabled: 按鈕停用時顯示的點陣圖。

  • pressed: 按下按鈕時顯示的點陣圖(例如,當使用者將滑鼠按鈕按在按鈕上時)

  • focus: 按鈕具有鍵盤焦點時顯示的點陣圖(但未按下,因為在這種情況下,按鈕處於按下狀態)

  • current: 滑鼠停留在按鈕上方時顯示的點陣圖(但未按下,儘管它可能具有焦點)。請注意,如果未指定目前的點陣圖,但目前的平台 UI 會為按鈕使用懸停圖像(例如 Windows 或 GTK+),則也會將焦點點陣圖用於懸停狀態。這使得僅設定焦點點陣圖即可在所有平台上獲得相當好的行為。

所有點陣圖的大小都必須相同,並且必須先設定正常的點陣圖(為有效的點陣圖),然後再設定任何其他點陣圖。此外,如果稍後變更點陣圖的大小,則需要在設定任何具有新大小的其他點陣圖之前,變更正常點陣圖的大小(並且您需要重設所有點陣圖,因為當正常點陣圖大小變更時,其原始值可能會遺失)。

可以使用 SetBitmapPosition() 設定圖像在按鈕內的位置(在 wx 中未實作)。預設情況下,圖像位於文字的左側。

另請注意,GTK+ 使用名為 gtk-button-images 的全域設定來決定是否應在按鈕中顯示圖像。如果它關閉(預設情況下在例如 Gnome 2.28 中),則不會顯示任何圖像,這與原生行為一致。

樣式

此類別支援以下樣式

  • wxBU_LEFT:靠左對齊標籤。僅限 Windows 和 GTK+。

  • wxBU_TOP:將標籤對齊到按鈕的頂部。僅限 Windows 和 GTK+。

  • wxBU_RIGHT:靠右對齊點陣圖標籤。僅限 Windows 和 GTK+。

  • wxBU_BOTTOM:將標籤對齊到按鈕的底部。僅限 Windows 和 GTK+。

  • wxBU_EXACTFIT:預設情況下,所有按鈕的大小都至少為標準按鈕大小,即使它們的內容小到足以放入較小的大小中。這是為了保持一致性,因為大多數平台在原生對話框中使用大小相同的按鈕,但是可以透過指定此旗標來覆寫此行為。如果指定此旗標,則按鈕的大小將僅為其內容所需的大小。請注意,在 MSW 下,如果按鈕具有非空標籤,即使具有此樣式,按鈕仍將至少具有標準高度。

  • wxBU_NOTEXT:即使按鈕具有文字標籤,或其 ID 是具有相關標籤的標準庫存 ID 之一,也會停用在按鈕中顯示文字標籤:如果不使用此樣式,則僅應顯示點陣圖但使用標準 ID 的按鈕也會顯示標籤。

  • wxBORDER_NONE:建立沒有邊框的按鈕。目前在 MSW、GTK2 和 OSX/Cocoa 中實作。

請參閱:wxBitmapButton

此類別衍生自以下類別,並且可以使用其中的函式

wxWidgets 文件:wxButton

事件

由此類別發出的事件類型

摘要

函式

用於兩步驟建立的按鈕建立函式。

銷毀物件

傳回停用狀態的點陣圖,它可能無效。

傳回焦點狀態的點陣圖,它可能無效。

傳回正常狀態的點陣圖。

傳回按鈕的預設大小。

預設建構函式。

建構函式,建立並顯示按鈕。

設定停用按鈕外觀的點陣圖。

設定按鈕具有鍵盤焦點時的按鈕外觀點陣圖。

設定按鈕的點陣圖標籤。

這會將按鈕設定為其頂層視窗中的預設項目(例如。

設定按鈕的字串標籤。

類型

-type wxButton() :: wx:wx_object().

函式

連結到此函式

create(This, Parent, Id)

檢視原始碼
-spec create(This, Parent, Id) -> boolean()
                when This :: wxButton(), Parent :: wxWindow:wxWindow(), Id :: integer().

等效於 create(This, Parent, Id, [])

-spec create(This, Parent, Id, [Option]) -> boolean()
                when
                    This :: wxButton(),
                    Parent :: wxWindow:wxWindow(),
                    Id :: integer(),
                    Option ::
                        {label, unicode:chardata()} |
                        {pos, {X :: integer(), Y :: integer()}} |
                        {size, {W :: integer(), H :: integer()}} |
                        {style, integer()} |
                        {validator, wx:wx_object()}.

用於兩步驟建立的按鈕建立函式。

如需更多詳細資訊,請參閱 new/3

-spec destroy(This :: wxButton()) -> ok.

銷毀物件

連結到此函式

getBitmapDisabled(This)

檢視原始碼
-spec getBitmapDisabled(This) -> wxBitmap:wxBitmap() when This :: wxButton().

傳回停用狀態的點陣圖,它可能無效。

請參閱:setBitmapDisabled/2

自:2.9.1(先前版本僅在 wxBitmapButton 中提供)

-spec getBitmapFocus(This) -> wxBitmap:wxBitmap() when This :: wxButton().

傳回焦點狀態的點陣圖,它可能無效。

請參閱:setBitmapFocus/2

自:2.9.1(先前版本僅在 wxBitmapButton 中提供)

-spec getBitmapLabel(This) -> wxBitmap:wxBitmap() when This :: wxButton().

傳回正常狀態的點陣圖。

這與 GetBitmap() 完全相同(在 wx 中未實作),但使用與 wxBitmapButton 向後相容的名稱。

請參閱:setBitmapLabel/2

自:2.9.1(先前版本僅在 wxBitmapButton 中提供)

-spec getDefaultSize() -> {W :: integer(), H :: integer()}.

傳回按鈕的預設大小。

建議將所有對話方塊按鈕設為相同大小,此函式允許擷取最適合此大小的(平台和目前字型相關)大小。

自 wxWidgets 3.1.3 起,可選的 win 引數是新的,並允許取得每個監視器的 DPI 特定大小。

-spec getDefaultSize(Win) -> {W :: integer(), H :: integer()} when Win :: wxWindow:wxWindow().
-spec new() -> wxButton().

預設建構函式。

-spec new(Parent, Id) -> wxButton() when Parent :: wxWindow:wxWindow(), Id :: integer().

等效於 new(Parent, Id, [])

-spec new(Parent, Id, [Option]) -> wxButton()
             when
                 Parent :: wxWindow:wxWindow(),
                 Id :: integer(),
                 Option ::
                     {label, unicode:chardata()} |
                     {pos, {X :: integer(), Y :: integer()}} |
                     {size, {W :: integer(), H :: integer()}} |
                     {style, integer()} |
                     {validator, wx:wx_object()}.

建構函式,建立並顯示按鈕。

建立標準按鈕的首選方式是使用 label 的預設值。如果未提供標籤,且 id 是此清單中的標準 ID 之一,則會使用標準標籤。換句話說,如果您使用預先定義的 wxID_XXX 常數,只需完全省略標籤,而不是指定它。特別是,在 macOS 下,說明按鈕(idwxID_HELP 的按鈕)根本無法顯示任何標籤,而 wxButton 會偵測是否使用了標準的「說明」標籤並忽略它,而使用任何其他標籤都會導致按鈕無法正確顯示為說明按鈕,因此應避免使用。

此外,按鈕將在 GTK+ 2 下以庫存圖示裝飾。

請參閱:create/4

連結到此函式

setBitmapDisabled(This, Bitmap)

檢視原始碼
-spec setBitmapDisabled(This, Bitmap) -> ok when This :: wxButton(), Bitmap :: wxBitmap:wxBitmap().

設定停用按鈕外觀的點陣圖。

如果 bitmap 無效,則停用的點陣圖會設定為自動產生的正常點陣圖的灰色版本,也就是說,如果完全沒有呼叫此方法,則會預設使用相同的點陣圖。使用 SetBitmap() (在 wx 中未實作)並使用無效的點陣圖來完全移除點陣圖(對於所有狀態)。

請參閱

自:2.9.1(先前版本僅在 wxBitmapButton 中提供)

連結到此函式

setBitmapFocus(This, Bitmap)

檢視原始碼
-spec setBitmapFocus(This, Bitmap) -> ok when This :: wxButton(), Bitmap :: wxBitmap:wxBitmap().

設定按鈕具有鍵盤焦點時的按鈕外觀點陣圖。

如果 bitmap 無效,則會在焦點狀態中使用正常點陣圖。

請參閱

自:2.9.1(先前版本僅在 wxBitmapButton 中提供)

連結到此函式

setBitmapLabel(This, Bitmap)

檢視原始碼
-spec setBitmapLabel(This, Bitmap) -> ok when This :: wxButton(), Bitmap :: wxBitmap:wxBitmap().

設定按鈕的點陣圖標籤。

注意:這是用於未選取狀態的點陣圖,如果沒有提供其他點陣圖,則用於所有其他狀態。

請參閱:getBitmapLabel/1

自:2.9.1(先前版本僅在 wxBitmapButton 中提供)

-spec setDefault(This) -> wxWindow:wxWindow() when This :: wxButton().

這會將按鈕設定為其頂層視窗中的預設項目(例如。

包含它的面板或對話方塊)。

與平常一樣,按下 Return 鍵會導致按下 Return 鍵時按下預設按鈕。

另請參閱 wxWindow:setFocus/1,它會設定視窗和文字面板項目的鍵盤焦點,以及 wxTopLevelWindow::SetDefaultItem()(在 wx 中未實作)。

注意:在 Windows 下,只有對話方塊按鈕才會回應此函式。

傳回:舊的預設項目(可能為 NULL)

-spec setLabel(This, Label) -> ok when This :: wxButton(), Label :: unicode:chardata().

設定按鈕的字串標籤。