查看源代码 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()}.

返回按钮的默认大小。

建议使所有对话框按钮的大小相同,此函数允许检索(平台和当前字体相关的)最适合此操作的大小。

可选的 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 下的帮助按钮(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().

这将按钮设置为其顶层窗口中的默认项(例如,

包含它的面板或对话框。

像往常一样,按下回车键会导致在按下回车键时按下默认按钮。

另请参见 wxWindow:setFocus/1,它设置窗口和文本面板项的键盘焦点,以及 wxTopLevelWindow::SetDefaultItem()(在 wx 中未实现)。

备注:在 Windows 下,只有对话框按钮会响应此函数。

返回:旧的默认项(可能为 NULL)

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

设置按钮的字符串标签。