为使用 GUIDE 创建的 App 创建菜单
注意
在以后的版本中将会删除 GUIDE 环境。在删除 GUIDE 后,使用 GUIDE 创建的现有 App 可以继续在 MATLAB® 中运行,但不能在 GUIDE 中对其进行编辑。
要继续编辑使用 GUIDE 创建的现有 App,请参阅 GUIDE 迁移策略,了解有关如何帮助保持该 App 与未来 MATLAB 版本的兼容性的信息。要以交互方式创建新 App,请改用使用 App 设计工具开发 App。
您可以使用 GUIDE 来创建菜单栏(包含下拉菜单)以及附加到组件的上下文菜单。您可以使用菜单编辑器来创建这两种类型的菜单。从工具菜单访问菜单编辑器,或点击菜单编辑器按钮 。
菜单栏中的菜单
创建下拉菜单时,GUIDE 会将其标题添加到菜单栏中。然后可以创建该菜单的菜单项。每个菜单项可以包含一个级联菜单,也称为子菜单,并且这些菜单项还可以包含级联菜单,以此类推。
菜单对图窗停靠的影响
默认情况下,使用 GUIDE 创建 UI 时,不会为该 UI 创建菜单栏。您的 UI 可能不需要菜单,但如果您希望用户能够停靠或取消停靠 UI 窗口,则必须包含菜单栏或工具栏。这是因为,停靠受停靠图标控制,而该图标是一个位于菜单栏或工具栏右上角的小弯箭头,如下图所示。
包含标准菜单栏的图窗窗口还有一个桌面菜单,用户可从该菜单停靠和取消停靠图窗窗口。
要显示停靠箭头和桌面 > 停靠图窗菜单项,请使用属性检查器将图窗属性 DockControls
设为 'on'
。还必须将 MenuBar
和/或 ToolBar
图窗属性设为 'figure'
,以显示停靠控件。
WindowStyle
图窗属性还会影响停靠行为。默认值为 'normal'
,但如果将其更改为 'docked'
,则会发生以下情况:
运行 UI 窗口时,该窗口将会打开并停靠在桌面上。
DockControls
属性被设为'on'
,并且无法关闭,除非WindowStyle
不再设为'docked'
。如果取消停靠使用
WindowStyle
'docked'
创建的 UI 窗口,则除非图窗显示菜单栏或工具栏(标准或自定义),否则窗口将不会包含停靠箭头。当窗口不含停靠箭头时,用户可以从桌面将其取消停靠,但无法将其重新停靠到该位置。
不过,当您使用 GUIDE 提供自己的菜单栏或工具栏时,如果希望 UI 窗口可以停靠,它可能会显示停靠箭头。
注意
模态对话框 UI(将 WindowStyle
设为 'modal'
的图窗)不能包含菜单栏、工具栏或停靠控件。
有关详细信息,请参阅 Figure 属性 中的 DockControls
、MenuBar
、ToolBar
和 WindowStyle
属性说明。
在菜单栏中添加标准菜单
图窗的 MenuBar
属性用于控制 UI 是否在菜单栏上显示 MATLAB 标准菜单。GUIDE 最初将 MenuBar
的值设为 none
。如果您希望 UI 显示 MATLAB 标准菜单,请使用属性检查器将 MenuBar
设为 figure
。
如果
MenuBar
的值为none
,则 GUIDE 会自动添加一个菜单栏,其中仅显示您所创建的菜单。如果
MenuBar
的值为figure
,则 UI 将显示 MATLAB 标准菜单,并且 GUIDE 会将您所创建的菜单添加到菜单栏的右侧。
两种情况下,用户都可以通过将图窗的 DockControls
属性设为 'on'
来停靠和取消停靠窗口。
创建菜单
通过点击工具栏中的“新建菜单”按钮开始创建一个新菜单。菜单标题
Untitled 1
随即显示在对话框的左侧窗格中。默认情况下,GUIDE 会在打开菜单编辑器时选中菜单栏选项卡。
点击菜单标题,以便在右侧窗格中显示菜单属性选项。
填充菜单的文本和标记字段。例如,将文本设为
File
,将标记设为file_menu
。点击字段外部,使更改生效。文本是菜单项的文本标签。要在标签中显示 & 字符,请使用两个
&
字符。remove
、default
和factory
(区分大小写)为保留词语。要将上述词语之一用作标签,请在词语前面加一个反斜杠字符 (\
)。例如,输入\remove
将得到 remove。标记是用作菜单对象标识符的字符向量。它在代码中用于标识菜单项,因此在代码文件中必须是唯一的。
在菜单中添加菜单项
使用新建菜单项工具创建显示在下拉菜单中的菜单项。
通过选择
File
然后点击工具栏中的新建菜单项,在File
下面添加一个 Open 菜单项。随即显示一个临时编号的菜单项标签Untitled
。填充新菜单项的文本和标记字段。例如,将文本设为
Open
,将标记设为menu_file_open
。点击字段外部,使更改生效。
也可以
使用快捷键弹出式菜单为菜单项选择字母键盘快捷键。与 Ctrl 组合使用,是不含子菜单的菜单项的键盘等效键。请注意,在您的系统中,有些快捷键可能被用于其他用途,并且可能导致其他操作。
通过选中在此菜单项上方放置分隔线,在菜单项上面显示分隔线。
通过选中在此菜单项前添加复选标记,在首次打开菜单时菜单项的旁边会显示复选标记。选中标记指示菜单项的当前状态。请参阅在上下文菜单中添加菜单项中的示例。
通过选中启用此项,在首次打开菜单时启用此菜单项。这允许用户在首次打开菜单时选中此菜单项。如果清除此选项,则在首次打开菜单时,菜单项将会灰显,用户无法将其选中。
指定在用户选择菜单项时执行的回调函数。如果尚未保存 UI,则默认值为
%automatic
。在保存 UI 时,如果未更改此字段,GUIDE 将自动使用标记字段和 UI 文件名的组合来设置该值。有关指定此字段以及以编程方式编写菜单项的详细信息,请参阅菜单项。视图按钮会在编辑器中显示回调(如果有)。如果尚未保存 UI,GUIDE 将会提示您保存。
通过点击更多属性按钮打开属性检查器,您可在其中更改所有菜单属性。有关这些属性的详细信息,请参阅 Menu 属性。
有关编程信息和基本示例,请参阅菜单项和如何更新菜单项复选标记。
更多下拉菜单
要创建更多下拉菜单,请使用“新建菜单”按钮,方法与创建 File
菜单相同。例如,以下图窗还显示了一个 Edit
下拉菜单。
级联菜单
要创建级联菜单,请选中将用作级联菜单标题的菜单项,然后点击新建菜单项按钮。在以下示例中,Edit
为级联菜单。
有关以编程方式编写菜单项的信息,请参阅菜单项。
以下菜单编辑器图显示了为图窗菜单栏定义的三个菜单。
在运行 App 时,菜单标题将会显示在菜单栏中。
上下文菜单
如果为对象定义了上下文菜单,则当用户右键点击该对象时,将显示该上下文菜单。利用菜单编辑器,可以定义上下文菜单,并将其与布局中的对象关联。该过程包含三个步骤:
有关定义一般菜单的信息,请参阅菜单栏中的菜单。有关为菜单定义局部回调函数的信息,请参阅菜单项。
创建父菜单
上下文菜单中的所有项都是未在图窗菜单栏中显示的菜单的子项。要定义父菜单,请执行以下操作:
选择菜单编辑器的上下文菜单选项卡,然后从工具栏中选择“新建上下文菜单”按钮。
选择菜单,并在标记字段中键入上下文菜单标记(在此示例中为
axes_context_menu
)。
在上下文菜单中添加菜单项
使用“新建菜单项”按钮创建显示在上下文菜单中的菜单项。
通过选择
axes_context_menu
并点击新建菜单项工具,添加一个蓝色背景颜色
的菜单项。随即显示一个临时编号的菜单项标签Untitled
。填充新菜单项的文本和标记字段。例如,将文本设为
Blue background color
,将标记设为blue_background
。点击字段外部,使更改生效。
也可以采用以下方法修改菜单项:
通过选中在此菜单项上方放置分隔线,在菜单项上面显示分隔线。
通过选中在此菜单项前添加复选标记,在首次打开菜单时菜单项的旁边会显示复选标记。选中标记指示菜单项的当前状态。请参阅在上下文菜单中添加菜单项中的示例。有关代码示例,请参阅如何更新菜单项复选标记。
通过选中启用此项,在首次打开菜单时启用此菜单项。这允许用户在首次打开菜单时选中此菜单项。如果清除此选项,则在首次打开菜单时,菜单项将会灰显,用户无法将其选中。
为菜单指定回调,用于执行与菜单项关联的操作。如果尚未保存 UI,则默认值为
%automatic
。在保存 UI 时,如果尚未更改此字段,GUIDE 将会自动使用标记字段和 UI 文件名的组合,在代码文件中创建回调。回调名称不会显示在菜单编辑器的回调字段中,但选择菜单项会触发回调。也可以在回调字段中键入命令。它可以是任意有效的 MATLAB 表达式或命令。例如,此命令
将当前坐标区背景色设为黄色。但是,执行此操作的首选方法是将回调置于代码文件中。这将避免使用set(gca, 'Color', 'y')
gca
,因为当存在多个图窗或坐标区时,该函数不一定总是可靠。以下是一个在代码文件中以函数形式编写的此回调的版本:不论将上下文菜单附加到哪个对象,此代码都将为function axesyellow_Callback(hObject, eventdata, handles) % hObject handle to axesyellow (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.axes1,'Color','y')
axes1
标记的坐标区设置背景色。如果在菜单编辑器中输入了回调值,它将覆盖代码文件中已保存的菜单项回调。如果删除了在回调字段中输入的值,则当用户在 UI 中选中该菜单项时,系统将执行该菜单项在代码文件中的回调。
有关指定此字段以及以编程方式编写菜单项的详细信息,请参阅菜单项。
视图按钮会在编辑器中显示回调(如果有)。如果尚未保存 UI,GUIDE 将会提示您保存。
点击更多属性按钮打开属性检查器,可在其中更改除回调以外的其他所有菜单属性。有关这些属性的详细信息,请参阅 ContextMenu 属性。
将上下文菜单与对象关联
在布局编辑器中,选择要为其定义上下文菜单的对象。
使用属性检查器,将此对象的
ContextMenu
属性设为所需上下文菜单的名称。
以下图窗显示了 Tag
属性为 axes1
的 axes
对象的 ContextMenu
属性。
在代码文件中,完成上下文菜单中每个菜单项的局部回调函数。每个回调将在用户选择关联的上下文菜单项时执行。有关定义语法的信息,请参阅菜单项。
请参阅如何更新菜单项复选标记了解编程信息和基本示例。