檢視原始碼 wxButton (wx v2.4.3)
按鈕是一種包含文字字串的控制項,也是 GUI 中最常見的元素之一。
它可以放置在 wxDialog
或 wxPanel
面板上,實際上幾乎可以放置在任何其他視窗上。
預設情況下,也就是說,如果未指定任何對齊樣式,則標籤會在水平和垂直方向上置中。如果按鈕同時具有標籤和點陣圖,則上面的對齊樣式會指定結合標籤和點陣圖的矩形的位置,而使用 wxButton::SetBitmapPosition()
設定的點陣圖位置(在 wx 中未實作)則定義了點陣圖相對於標籤的位置(但是,目前並非所有平台都實作了非預設的對齊組合)。
自 2.9.1 版本起,wxButton
支援同時顯示文字和圖像(目前僅在使用 wxMSW、wxGTK 或 wxOSX/Cocoa 連接埠時),請參閱 SetBitmap()
(在 wx 中未實作)和 setBitmapLabel/2
、setBitmapDisabled/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().
函式
-spec create(This, Parent, Id) -> boolean() when This :: wxButton(), Parent :: wxWindow:wxWindow(), Id :: integer().
-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.
銷毀物件
-spec getBitmapDisabled(This) -> wxBitmap:wxBitmap() when This :: wxButton().
傳回停用狀態的點陣圖,它可能無效。
自: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
中提供)
傳回按鈕的預設大小。
建議將所有對話方塊按鈕設為相同大小,此函式允許擷取最適合此大小的(平台和目前字型相關)大小。
自 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 下,說明按鈕(id
為 wxID_HELP
的按鈕)根本無法顯示任何標籤,而 wxButton
會偵測是否使用了標準的「說明」標籤並忽略它,而使用任何其他標籤都會導致按鈕無法正確顯示為說明按鈕,因此應避免使用。
此外,按鈕將在 GTK+ 2 下以庫存圖示裝飾。
請參閱:create/4
-spec setBitmapDisabled(This, Bitmap) -> ok when This :: wxButton(), Bitmap :: wxBitmap:wxBitmap().
設定停用按鈕外觀的點陣圖。
如果 bitmap
無效,則停用的點陣圖會設定為自動產生的正常點陣圖的灰色版本,也就是說,如果完全沒有呼叫此方法,則會預設使用相同的點陣圖。使用 SetBitmap()
(在 wx 中未實作)並使用無效的點陣圖來完全移除點陣圖(對於所有狀態)。
請參閱
自:2.9.1(先前版本僅在 wxBitmapButton
中提供)
-spec setBitmapFocus(This, Bitmap) -> ok when This :: wxButton(), Bitmap :: wxBitmap:wxBitmap().
設定按鈕具有鍵盤焦點時的按鈕外觀點陣圖。
如果 bitmap
無效,則會在焦點狀態中使用正常點陣圖。
請參閱
自:2.9.1(先前版本僅在 wxBitmapButton
中提供)
-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().
設定按鈕的字串標籤。