查看源代码 wxMenuItem (wx v2.4.3)
菜单项表示菜单中的一个项目。
请注意,通常您不必直接处理它,因为 wxMenu
方法通常会为您构造此类的对象。
另请注意,与字体和位图相关的方法目前仅在 Windows、Mac 和 GTK+ 上实现。
参见
wxWidgets 文档: wxMenuItem
事件
此类发出的事件类型
概要
函数
选中或取消选中菜单项。
销毁对象
启用或禁用菜单项。
返回选中或未选中的位图。
返回与菜单项关联的帮助字符串。
返回菜单项标识符。
返回与菜单项关联的文本,包括传递给构造函数或 setItemLabel/2
的任何加速键字符。
返回与菜单项关联的文本,不包括任何加速键字符。
返回项目类型,即 wxITEM_SEPARATOR
、wxITEM_NORMAL
、wxITEM_CHECK
或 wxITEM_RADIO
之一。
从给定的 text
中去除所有加速键字符和助记符。
返回此菜单项所在的菜单,如果此菜单项未附加,则返回 NULL。
返回与菜单项关联的子菜单,如果没有子菜单,则返回 NULL。
如果项目可选中,则返回 true。
如果项目被选中,则返回 true。
如果项目已启用,则返回 true。
如果项目是分隔符,则返回 true。
如果项目是子菜单,则返回 true。
构造一个 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
的任何加速键字符。
参见
-spec getItemLabelText(This) -> unicode:charlist() when This :: wxMenuItem().
返回与菜单项关联的文本,不包括任何加速键字符。
参见
-spec getKind(This) -> wx:wx_enum() when This :: wxMenuItem().
返回项目类型,即 wxITEM_SEPARATOR
、wxITEM_NORMAL
、wxITEM_CHECK
或 wxITEM_RADIO
之一。
-spec getLabel(This) -> unicode:charlist() when This :: wxMenuItem().
-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 并将 text
和 help
字符串留空就足够了。某些平台(目前只有 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
-spec setHelp(This, HelpString) -> ok when This :: wxMenuItem(), HelpString :: unicode:chardata().
设置帮助字符串。
-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
相同。
加速键可以是任何字母数字字符、任何功能键(从 F1
到 F12
)、任何使用 KP_
前缀的数字键盘数字键(即从 KP_0
到 KP_9
)或下面列出的对应于指定按键代码的特殊字符串之一(同样,不区分大小写)
Del
或Delete:
WXK_DELETEBack:
WXK_BACKIns
或Insert:
WXK_INSERTEnter
或Return:
WXK_RETURNPgUp
或PageUp:
WXK_PAGEUPPgDn
或PageDown:
WXK_PAGEDOWNLeft:
WXK_LEFTRight:
WXK_RIGHTUp:
WXK_UPDown:
WXK_DOWNHome:
WXK_HOMEEnd:
WXK_ENDSpace:
WXK_SPACETab:
WXK_TABEsc
或Escape:
WXK_ESCAPECancel:
WXK_CANCELClear:
WXK_CLEARMenu:
WXK_MENUPause:
WXK_PAUSECapital:
WXK_CAPITALSelect:
WXK_SELECTPrint:
WXK_PRINTExecute:
WXK_EXECUTESnapshot:
WXK_SNAPSHOTHelp:
WXK_HELPAdd:
WXK_ADDSeparator:
WXK_SEPARATORSubtract:
WXK_SUBTRACTDecimal:
WXK_DECIMALDivide:
WXK_DIVIDENum_lock:
WXK_NUMLOCKScroll_lock:
WXK_SCROLLKP_Space:
WXK_NUMPAD_SPACEKP_Tab:
WXK_NUMPAD_TABKP_Enter:
WXK_NUMPAD_ENTERKP_Home:
WXK_NUMPAD_HOMEKP_Left:
WXK_NUMPAD_LEFTKP_Up:
WXK_NUMPAD_UPKP_Right:
WXK_NUMPAD_RIGHTKP_Down:
WXK_NUMPAD_DOWNKP_PageUp:
WXK_NUMPAD_PAGEUPKP_PageDown:
WXK_NUMPAD_PAGEDOWNKP_Prior:
WXK_NUMPAD_PAGEUPKP_Next:
WXK_NUMPAD_PAGEDOWNKP_End:
WXK_NUMPAD_ENDKP_Begin:
WXK_NUMPAD_BEGINKP_Insert:
WXK_NUMPAD_INSERTKP_Delete:
WXK_NUMPAD_DELETEKP_Equal:
WXK_NUMPAD_EQUALKP_Multiply:
WXK_NUMPAD_MULTIPLYKP_Add:
WXK_NUMPAD_ADDKP_Separator:
WXK_NUMPAD_SEPARATORKP_Subtract:
WXK_NUMPAD_SUBTRACTKP_Decimal:
WXK_NUMPAD_DECIMALKP_Divide:
WXK_NUMPAD_DIVIDEWindows_Left:
WXK_WINDOWS_LEFTWindows_Right:
WXK_WINDOWS_RIGHTWindows_Menu:
WXK_WINDOWS_MENUCommand:
WXK_COMMAND
示例
注意:在 wxGTK 中,由于 GTK+ 的限制,目前使用 "SHIFT"
键与非字母字符组合时无法工作,即使与其他修饰键组合也是如此。例如,Shift+Ctrl+A
可以工作,但 Shift+Ctrl+1
或 Shift+/
则不行,因此请避免在可移植代码中使用这种形式的快捷键。
注意:在 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().
设置将包含此菜单项的父菜单。
-spec setSubMenu(This, Menu) -> ok when This :: wxMenuItem(), Menu :: wxMenu:wxMenu().
设置此菜单项的子菜单。
-spec setText(This, Label) -> ok when This :: wxMenuItem(), Label :: unicode:chardata().
等效于:setItemLabel/2