查看源代码 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 中实现。
此类派生自以下类,并可以使用其函数
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().
返回焦点状态的位图,可能无效。
自:2.9.1(在之前的版本中仅在 wxBitmapButton
中可用)
-spec getBitmapLabel(This) -> wxBitmap:wxBitmap() when This :: wxButton().
返回正常状态的位图。
这与 GetBitmap()
(在 wx 中未实现)完全相同,但使用了与 wxBitmapButton
向后兼容的名称。
自:2.9.1(在之前的版本中仅在 wxBitmapButton
中可用)
返回按钮的默认大小。
建议使所有对话框按钮的大小相同,此函数允许检索(平台和当前字体相关的)最适合此操作的大小。
可选的 win
参数是自 wxWidgets 3.1.3 以来的新参数,允许获取每个显示器 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().
设置按钮的位图标签。
备注:这是用于未选中状态的位图,如果未提供其他位图,则用于所有其他状态。
自:2.9.1(在之前的版本中仅在 wxBitmapButton
中可用)
-spec setDefault(This) -> wxWindow:wxWindow() when This :: wxButton().
这将按钮设置为其顶层窗口中的默认项(例如,
包含它的面板或对话框。
像往常一样,按下回车键会导致在按下回车键时按下默认按钮。
另请参见 wxWindow:setFocus/1
,它设置窗口和文本面板项的键盘焦点,以及 wxTopLevelWindow::SetDefaultItem()
(在 wx 中未实现)。
备注:在 Windows 下,只有对话框按钮会响应此函数。
返回:旧的默认项(可能为 NULL)
-spec setLabel(This, Label) -> ok when This :: wxButton(), Label :: unicode:chardata().
设置按钮的字符串标签。