查看源代码 wxMenuItem (wx v2.4.3)

菜单项表示菜单中的一个项目。

请注意,通常您不必直接处理它,因为 wxMenu 方法通常会为您构造此类的对象。

另请注意,与字体和位图相关的方法目前仅在 Windows、Mac 和 GTK+ 上实现。

参见

wxWidgets 文档: wxMenuItem

事件

此类发出的事件类型

概要

函数

选中或取消选中菜单项。

销毁对象

启用或禁用菜单项。

返回选中或未选中的位图。

返回与菜单项关联的帮助字符串。

返回菜单项标识符。

返回与菜单项关联的文本,包括传递给构造函数或 setItemLabel/2 的任何加速键字符。

返回与菜单项关联的文本,不包括任何加速键字符。

返回项目类型,即 wxITEM_SEPARATORwxITEM_NORMALwxITEM_CHECKwxITEM_RADIO 之一。

从给定的 text 中去除所有加速键字符和助记符。

返回此菜单项所在的菜单,如果此菜单项未附加,则返回 NULL。

返回与菜单项关联的子菜单,如果没有子菜单,则返回 NULL。

如果项目可选中,则返回 true。

如果项目被选中,则返回 true。

如果项目已启用,则返回 true。

如果项目是分隔符,则返回 true。

如果项目是子菜单,则返回 true。

等效于 new([])

构造一个 wxMenuItem 对象。

设置菜单项的位图。

设置帮助字符串。

设置与菜单项关联的标签。

设置将包含此菜单项的父菜单。

设置此菜单项的子菜单。

类型

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

函数

-spec check(This) -> ok when This :: wxMenuItem().

等效于 check(This, [])

-spec check(This, [Option]) -> ok when This :: wxMenuItem(), Option :: {check, boolean()}.

选中或取消选中菜单项。

请注意,这仅在项目已附加到菜单时才有效。

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

销毁对象

-spec enable(This) -> ok when This :: wxMenuItem().

等效于 enable(This, [])

-spec enable(This, [Option]) -> ok when This :: wxMenuItem(), Option :: {enable, boolean()}.

启用或禁用菜单项。

-spec getBitmap(This) -> wxBitmap:wxBitmap() when This :: wxMenuItem().

返回选中或未选中的位图。

仅适用于:wxmsw

-spec getHelp(This) -> unicode:charlist() when This :: wxMenuItem().

返回与菜单项关联的帮助字符串。

-spec getId(This) -> integer() when This :: wxMenuItem().

返回菜单项标识符。

-spec getItemLabel(This) -> unicode:charlist() when This :: wxMenuItem().

返回与菜单项关联的文本,包括传递给构造函数或 setItemLabel/2 的任何加速键字符。

参见

链接到此函数

getItemLabelText(This)

查看源代码
-spec getItemLabelText(This) -> unicode:charlist() when This :: wxMenuItem().

返回与菜单项关联的文本,不包括任何加速键字符。

参见

-spec getKind(This) -> wx:wx_enum() when This :: wxMenuItem().

返回项目类型,即 wxITEM_SEPARATORwxITEM_NORMALwxITEM_CHECKwxITEM_RADIO 之一。

-spec getLabel(This) -> unicode:charlist() when This :: wxMenuItem().

等效于:getItemLabelText/1

链接到此函数

getLabelFromText(Text)

查看源代码
-spec getLabelFromText(Text) -> unicode:charlist() when Text :: unicode:chardata().

等效于:getLabelText/1

-spec getLabelText(Text) -> unicode:charlist() when Text :: unicode:chardata().

从给定的 text 中去除所有加速键字符和助记符。

例如

将仅返回 "Hello"

参见

-spec getMenu(This) -> wxMenu:wxMenu() when This :: wxMenuItem().

返回此菜单项所在的菜单,如果此菜单项未附加,则返回 NULL。

-spec getSubMenu(This) -> wxMenu:wxMenu() when This :: wxMenuItem().

返回与菜单项关联的子菜单,如果没有子菜单,则返回 NULL。

-spec getText(This) -> unicode:charlist() when This :: wxMenuItem().

等效于:getItemLabel/1

-spec isCheckable(This) -> boolean() when This :: wxMenuItem().

如果项目可选中,则返回 true。

请注意,单选按钮也被认为是可选择的,因此此方法也会为它们返回 true。如果要仅测试复选项目,请使用 IsCheck()(在 wx 中未实现)。

-spec isChecked(This) -> boolean() when This :: wxMenuItem().

如果项目被选中,则返回 true。

-spec isEnabled(This) -> boolean() when This :: wxMenuItem().

如果项目已启用,则返回 true。

-spec isSeparator(This) -> boolean() when This :: wxMenuItem().

如果项目是分隔符,则返回 true。

-spec isSubMenu(This) -> boolean() when This :: wxMenuItem().

如果项目是子菜单,则返回 true。

-spec new() -> wxMenuItem().

等效于 new([])

-spec new([Option]) -> wxMenuItem()
             when
                 Option ::
                     {parentMenu, wxMenu:wxMenu()} |
                     {id, integer()} |
                     {text, unicode:chardata()} |
                     {help, unicode:chardata()} |
                     {kind, wx:wx_enum()} |
                     {subMenu, wxMenu:wxMenu()}.

构造一个 wxMenuItem 对象。

菜单项可以是标准的、"库存菜单项"或自定义的。对于标准菜单项(例如打开文件、退出程序等命令,完整列表请参阅 page_stockitems),仅指定库存 ID 并将 texthelp 字符串留空就足够了。某些平台(目前只有 wxGTK,请参阅 setBitmap/2 文档中的备注)还会显示库存菜单项的标准位图。

实际上强烈建议至少将库存菜单项的 text 留空,因为它们将具有用户熟悉的界面外观和键盘界面(包括标准加速键)。

对于自定义(非库存)菜单项,必须指定 text,虽然可以将 help 字符串留空,但建议在此参数中传递项目描述(当选中菜单项时,库会自动在状态栏中显示该描述)。

最后请注意,您可以例如使用库存菜单标签,而不使用其库存帮助字符串

也就是说,库存属性是彼此独立设置的。

-spec setBitmap(This, Bmp) -> ok when This :: wxMenuItem(), Bmp :: wxBitmap:wxBitmap().

设置菜单项的位图。

如果 checked 为 true(默认值),则等效于 wxMenuItem::SetBitmaps(bmp, wxNullBitmap),否则等效于 SetBitmaps(wxNullBitmap, bmp)。

setBitmap/2 必须在将项目附加到菜单之前调用,即,在没有位图的情况下附加项目并在以后设置一个位图不能保证有效。但是,如果最初设置了位图,则以后可以更改或重置该位图。

请注意,GTK+ 使用名为 gtk-menu-images 的全局设置来确定是否应在菜单中显示图像。如果关闭(例如,在默认情况下 Gnome 2.28 中是这种情况),则不会显示任何图像,这与本机行为一致。

仅适用于:wxmsw,wxosx,wxgtk

链接到此函数

setHelp(This, HelpString)

查看源代码
-spec setHelp(This, HelpString) -> ok when This :: wxMenuItem(), HelpString :: unicode:chardata().

设置帮助字符串。

链接到此函数

setItemLabel(This, Label)

查看源代码
-spec setItemLabel(This, Label) -> ok when This :: wxMenuItem(), Label :: unicode:chardata().

设置与菜单项关联的标签。

请注意,如果此菜单项的 ID 对应于库存 ID,则不必指定标签:wxWidgets 将自动使用与该 ID 关联的库存项目标签。有关详细信息,请参阅 new/1

正常菜单项(不是分隔符)的标签字符串可以包含可用于从键盘激活菜单项的加速键。可以使用 & 字符指定加速键。为了在菜单项文本中嵌入 & 字符,必须将 & 字符加倍。

(可选)您还可以指定加速键字符串,方法是附加一个制表符 \t,后跟有效的按键组合(例如 CTRL+V)。其一般语法是 "CTRL""RAWCTRL""ALT""SHIFT" 字符串(不区分大小写)的任意组合,这些字符串之间用 '-''+' 字符分隔,后跟加速键本身。请注意,CTRL 对应于大多数平台上的 "Ctrl" 键,但在 macOS 下并非如此,它在 Mac 键盘上映射到 "Cmd" 键。通常,这正是您在可移植代码中想要的,但如果您真的需要在 Mac 下使用(很少用于此目的)"Ctrl" 键,您可以使用 RAWCTRL 来防止此映射。在其他平台下,RAWCTRL 与普通的 CTRL 相同。

加速键可以是任何字母数字字符、任何功能键(从 F1F12)、任何使用 KP_ 前缀的数字键盘数字键(即从 KP_0KP_9)或下面列出的对应于指定按键代码的特殊字符串之一(同样,不区分大小写)

  • DelDelete: WXK_DELETE

  • Back: WXK_BACK

  • InsInsert: WXK_INSERT

  • EnterReturn: WXK_RETURN

  • PgUpPageUp: WXK_PAGEUP

  • PgDnPageDown: WXK_PAGEDOWN

  • Left: WXK_LEFT

  • Right: WXK_RIGHT

  • Up: WXK_UP

  • Down: WXK_DOWN

  • Home: WXK_HOME

  • End: WXK_END

  • Space: WXK_SPACE

  • Tab: WXK_TAB

  • EscEscape: WXK_ESCAPE

  • Cancel: WXK_CANCEL

  • Clear: WXK_CLEAR

  • Menu: WXK_MENU

  • Pause: WXK_PAUSE

  • Capital: WXK_CAPITAL

  • Select: WXK_SELECT

  • Print: WXK_PRINT

  • Execute: WXK_EXECUTE

  • Snapshot: WXK_SNAPSHOT

  • Help: WXK_HELP

  • Add: WXK_ADD

  • Separator: WXK_SEPARATOR

  • Subtract: WXK_SUBTRACT

  • Decimal: WXK_DECIMAL

  • Divide: WXK_DIVIDE

  • Num_lock: WXK_NUMLOCK

  • Scroll_lock: WXK_SCROLL

  • KP_Space: WXK_NUMPAD_SPACE

  • KP_Tab: WXK_NUMPAD_TAB

  • KP_Enter: WXK_NUMPAD_ENTER

  • KP_Home: WXK_NUMPAD_HOME

  • KP_Left: WXK_NUMPAD_LEFT

  • KP_Up: WXK_NUMPAD_UP

  • KP_Right: WXK_NUMPAD_RIGHT

  • KP_Down: WXK_NUMPAD_DOWN

  • KP_PageUp: WXK_NUMPAD_PAGEUP

  • KP_PageDown: WXK_NUMPAD_PAGEDOWN

  • KP_Prior: WXK_NUMPAD_PAGEUP

  • KP_Next: WXK_NUMPAD_PAGEDOWN

  • KP_End: WXK_NUMPAD_END

  • KP_Begin: WXK_NUMPAD_BEGIN

  • KP_Insert: WXK_NUMPAD_INSERT

  • KP_Delete: WXK_NUMPAD_DELETE

  • KP_Equal: WXK_NUMPAD_EQUAL

  • KP_Multiply: WXK_NUMPAD_MULTIPLY

  • KP_Add: WXK_NUMPAD_ADD

  • KP_Separator: WXK_NUMPAD_SEPARATOR

  • KP_Subtract: WXK_NUMPAD_SUBTRACT

  • KP_Decimal: WXK_NUMPAD_DECIMAL

  • KP_Divide: WXK_NUMPAD_DIVIDE

  • Windows_Left: WXK_WINDOWS_LEFT

  • Windows_Right: WXK_WINDOWS_RIGHT

  • Windows_Menu: WXK_WINDOWS_MENU

  • Command: WXK_COMMAND

示例

注意:在 wxGTK 中,由于 GTK+ 的限制,目前使用 "SHIFT" 键与非字母字符组合时无法工作,即使与其他修饰键组合也是如此。例如,Shift+Ctrl+A 可以工作,但 Shift+Ctrl+1Shift+/ 则不行,因此请避免在可移植代码中使用这种形式的快捷键。

注意:在 wxGTk 中,除非使用修饰键,否则左/右/上/下箭头键不能作为菜单项的快捷键。此外,以下键码不支持作为菜单快捷键:

  • WXK_COMMAND/WXK_CONTROL

  • WXK_SHIFT

  • WXK_ALT

  • WXK_SCROLL

  • WXK_CAPITAL

  • WXK_NUMLOCK

  • WXK_NUMPAD_TAB

  • WXK_TAB

  • WXK_WINDOWS_LEFT

  • WXK_WINDOWS_RIGHT

  • WXK_ADD

  • WXK_SEPARATOR

  • WXK_SUBTRACT

  • WXK_DECIMAL

  • WXK_DIVIDE

  • WXK_SNAPSHOT

参见

-spec setMenu(This, Menu) -> ok when This :: wxMenuItem(), Menu :: wxMenu:wxMenu().

设置将包含此菜单项的父菜单。

链接到此函数

setSubMenu(This, Menu)

查看源代码
-spec setSubMenu(This, Menu) -> ok when This :: wxMenuItem(), Menu :: wxMenu:wxMenu().

设置此菜单项的子菜单。

-spec setText(This, Label) -> ok when This :: wxMenuItem(), Label :: unicode:chardata().

等效于:setItemLabel/2