Main Content

本页面提供的是上一版软件的文档。当前版本中已删除对应的英文页面。

TabGroup 属性

控制基于 figure 的 App 中选项卡组的外观和行为

此处列出的属性对 GUIDE 中的或使用 figure 函数创建的 App 中的选项卡组有效。如果您正在使用 App 设计工具或 uifigure 函数,请参阅 TabGroup 属性。有关详细信息,请参阅GUIDE 迁移策略

选项卡组是用来对选项卡进行分组和管理的容器。可通过属性控制选项卡组的外观和行为。使用圆点表示法引用特定的对象和属性。

f = figure;
tg = uitabgroup(f);
tg.Position = [.1 .1 .8 .8];

选项卡

全部展开

选项卡标签位置,指定为 'top''bottom''left''right'。此属性指定选项卡标签相对于选项卡组的位置。

当前选择的选项卡,指定为 Tab 对象。

使用此属性可确定选项卡组中当前选定的选项卡。您也可以使用此属性设置默认选项。

SelectedTab 属性的默认值是您添加到选项卡组中的第一个选项卡。

交互性

全部展开

可见性状态,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

  • 'on' - 显示对象。

  • 'off' - 隐藏对象而不删除它。您仍然可以访问不可见 UI 组件的属性。

要使您的 App 更快地启动,请将不需要在启动时出现的所有组件的 Visible 属性设置为 'off'

更改不可见的容器的大小将在该容器变得可见时触发 SizeChangedFcn 回调。

更改容器的 Visible 属性不会改变其子组件的 Visible 属性值。即使隐藏容器会导致子组件隐藏也是如此。

上下文菜单,指定为使用 uicontextmenu 函数创建的 ContextMenu 对象。使用此属性可在您右键点击组件时显示上下文菜单。

位置

全部展开

位置和大小,指定为 [left bottom width height] 形式的四元素向量。此表介绍该向量中的每个元素。

元素说明
left父容器的内部左边缘与选项卡组的外部左边缘之间的距离
bottom父容器的内部下边缘与选项卡组的外部下边缘之间的距离
width选项卡组的左右外部边缘之间的距离
height选项卡组的上下外部边缘之间的距离

所有测量值都采用 Units 属性指定的单位。

注意

Position 值相对于父容器的可绘制区域。可绘制区域是指容器边框内的区域,不包括标题所占的区域。如果父容器是一个图窗,可绘制区域还不包括菜单栏和工具栏。

示例:修改位置向量中的一个值

如果要更改 Position 向量中的一个值,可以结合使用圆点表示法和数组索引。例如,下面的代码将选项卡组的宽度设置为 .5,而不更改任何其他 Position 值:

tg = uitabgroup;
tg.Position(3) = .5;

位置和大小,指定为 [left bottom width height] 形式的四元素向量。所有测量值都采用 Units 属性指定的单位。

此属性值等同于 PositionOuterPosition 属性值。

位置和大小,指定为 [left bottom width height] 形式的四元素向量。所有测量值都采用 Units 属性指定的单位。

此属性值等同于 PositionInnerPosition 属性值。

测量单位,指定为下表中的值之一。

单位值说明
'normalized'这些单位依据父容器进行归一化。容器的左下角映射到 (0,0),右上角映射到 (1,1)
'pixels'

像素。

从 R2015b 开始,以像素为单位的距离不再依赖 Windows®Macintosh 系统上的系统分辨率:

  • 在 Windows 系统上,一个像素是 1/96 英寸。

  • Macintosh 系统上,一个像素是 1/72 英寸。

在 Linux® 系统上,一个像素的大小由系统分辨率确定。

'inches'英寸。
'centimeters'厘米。
'points'磅。1 磅等于 1/72 英寸。
'characters'

这些单位基于图形根对象的默认 uicontrol 字体:

  • 字符宽度 = 字母 x 的宽度。

  • 字符高度 = 两个文本行的基线之间的距离。

要访问默认的 uicontrol 字体,请使用 get(groot,'defaultuicontrolFontName')set(groot,'defaultuicontrolFontName')

MATLAB® 从父对象的左下角测量所有单位。

如果您更改 Units 属性的值,则比较好的做法是在完成计算后将其恢复为默认值,以免影响其他假定 Units 设置为默认值的函数。

指定 Units 和 Position 属性的顺序具有以下影响:

  • 如果您在 Position 属性之前指定 Units 属性,则 MATLAB 会使用您指定的单位设置 Position

  • 如果您在 Position 属性之后指定 Units 属性,则 MATLAB 会使用默认的 Units 来设置 position。然后,MATLAB 将 Position 值转换为使用您指定的单位的等价值。

回调

全部展开

所选内容改变时的回调,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

当用户在选项卡组中选择不同的选项卡时,将执行此回调函数。

如果将 SelectionChangedFcn 属性设置为函数句柄(或包含函数句柄的元胞数组),则 MATLAB 将包含事件数据的 SelectionChangedData 对象作为第二个参数传递给回调函数。该对象包含下表中介绍的属性。您可以使用圆点表示法访问回调函数内的这些属性。例如,如果回调中的第二个参数名为 event,则 event.NewValue 返回当前选择的 Tab

属性

说明

OldValue

之前选择的 Tab[](如果未进行选择)

NewValue

当前选择的 Tab

Source

执行回调的组件

EventName

'SelectionChanged'

有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅如何指定回调属性值

大小更改回调函数,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

定义此回调在此容器的大小更改时(例如,当用户调整窗口大小时)自定义 App 布局。

SizeChangedFcn 回调在下列情况下执行:

  • 此容器首次变得可见。

  • 此容器在大小改变时可见。

  • 此容器在大小改变后首次变得可见。如果容器在大小改变时不可见,但后来变得可见,就属于这种情况。

定义 SizeChangedFcn 回调时要考虑的其他重要事项:

  • 考虑将此容器推迟到 SizeChangedFcn 使用的所有变量都定义之后再显示。此做法可避免 SizeChangedFcn 回调返回错误。要延迟显示容器,请将其 Visible 属性设置为 'off'。然后,在定义您的 SizeChangedFcn 回调使用的变量之后将 Visible 属性设置为 'on'

  • 如果您的 App 包含嵌套容器,它们从里向外调整大小。

  • 要访问从 SizeChangedFcn 中调整大小的容器,请指向源对象(回调中的第一个输入参数)或使用 gcbo 函数。

提示

作为指定 SizeChangedFcn 回调的一种简单替代方法,您可以将置于容器中的所有对象的 Units 属性都设置为 'normalized'。这样做会使这些组件随容器按比例缩放。

请参阅 以编程方式设置 UI 布局 了解有关使用 SizeChangedFcn 回调管理布局的详细信息。

按下鼠标按键回调函数,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅如何指定回调属性值

ButtonDownFcn 回调是当用户在容器内点击鼠标按键时执行的函数。

组件创建函数,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅如何指定回调属性值

此属性指定要在 MATLAB 创建组件时执行的回调函数。MATLAB 将在执行 CreateFcn 回调之前初始化所有的组件属性值。如果不指定 CreateFcn 属性,则 MATLAB 执行默认的创建函数。

可在您的 CreateFcn 代码中使用 gcbo 函数获取要创建的组件对象。

对现有组件对象设置 CreateFcn 属性没有任何作用。

组件删除函数,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

有关将回调属性值指定为函数句柄、元胞数组或字符向量的详细信息,请参阅如何指定回调属性值

DeleteFcn 属性指定要在 MATLAB 删除组件时(例如,当用户关闭窗口时)执行的回调函数。MATLAB 会在销毁组件对象的属性之前执行 DeleteFcn 回调。如果不指定 DeleteFcn 属性,则 MATLAB 执行默认的删除函数。

可在您的 DeleteFcn 代码中使用 gcbo 函数获取要删除的组件对象。

回调执行控件

全部展开

回调中断,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

Interruptible 属性确定是否可以中断运行中回调。有以下两种回调状态要考虑:

  • 运行中回调是当前正在执行的回调。

  • 中断回调是试图中断运行中回调的回调。

每当 MATLAB 调用回调时,回调都会试图中断正在运行的回调(如果存在)。运行中回调所属对象的 Interruptible 属性决定着是否允许中断:

  • 'on' 允许其他回调中断对象的回调。中断发生在 MATLAB 处理队列的下一个位置,例如当存在 drawnowfiguregetframewaitforpause 时。

    • 如果运行中回调包含以上命令之一,则 MATLAB 将在此时停止执行回调并执行中断回调。当中断回调完成时,MATLAB 将恢复执行运行中回调。

    • 如果运行中回调不包含以上命令之一,则 MATLAB 执行完当前回调,不会出现任何中断。

  • 'off' 阻止所有中断尝试。由中断回调所属的对象的 BusyAction 属性决定是放弃该中断回调还是将其放入队列中。

注意

回调的中断和执行在以下情况下会有不同的表现:

  • 如果中断回调是 DeleteFcnCloseRequestFcnSizeChangedFcn 回调,则无论是否存在 Interruptible 属性值都会发生中断。

  • 如果运行中回调当前正在执行 waitfor 函数,则无论是否存在 Interruptible 属性值都会发生中断。

  • Timer 对象根据排定时间执行,而不管 Interruptible 属性值如何。

  • 发生中断时,MATLAB 不保存属性状态或显示内容。例如,gcagcf 命令返回的对象可能会在另一个回调执行时发生改变。

有关演示 InterruptibleBusyAction 属性如何影响程序行为的示例,请参阅中断回调执行

回调排队,指定为 'queue'(默认值)或 'cancel'BusyAction 属性决定 MATLAB 如何处理中断回调的执行。有以下两种回调状态要考虑:

  • 运行中回调是当前正在执行的回调。

  • 中断回调是试图中断运行中回调的回调。

中断回调的来源的 BusyAction 属性决定 MATLAB 如何处理其执行。BusyAction 属性具有下列值:

  • 'queue' - 将中断回调放入队列中,以便在运行中回调执行完毕后进行处理。

  • 'cancel' - 不执行中断回调。

无论何时 MATLAB 调用回调,该回调都会试图中断正在执行的回调。运行中回调所属对象的 Interruptible 属性确定是否允许回调。如果 Interruptible 设置为:

  • on - 在下一个时间点(MATLAB 处理队列时)发生中断。这是默认设置。

  • off - BusyAction 属性(中断回调所属对象的属性)确定 MATLAB 是将中断回调纳入队列还是将其忽略。

有关演示 BusyActionInterruptible 属性如何影响程序行为的示例,请参阅中断回调执行

此属性为只读

删除状态,以 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值形式返回。

DeleteFcn 回调开始执行时,MATLAB 会将 BeingDeleted 属性设置为 'on'BeingDeleted 属性将一直保持 'on' 设置状态,直到组件对象不再存在为止。

在查询或修改对象之前,请先检查其 BeingDeleted 属性的值,以确认它不是待删除项。

父级/子级

全部展开

父对象,指定为 FigurePanelTab 对象。使用此属性可在创建选项卡组时指定父容器,或将现有选项卡组移动到其他父容器中。

TabGroup 的子级,以空 GraphicsPlaceholder 或组件对象的一维数组形式返回。TabGroup 对象的子级是 Tab 对象。

不能使用 Children 属性添加或删除子级。使用该属性查看子级列表或对子级重新排序。子级在该数组中的顺序反映了显示在屏幕上的选项卡的顺序。

要向该列表中添加子级,请将子组件的 Parent 属性设置为 TabGroup 对象。

HandleVisibility 属性设置为 'off' 的对象不会列在 Children 属性中。

对象句柄的可见性,指定为 'on''callback''off'

此属性控制对象句柄在其父级的子级列表中的可见性。当句柄未显示在其父对象的子对象列表中时,通过搜索对象层次结构或查询句柄属性获取句柄的函数不会返回该句柄。这些函数包括 getfindobjgcagcfgconewplotclaclfcloseHandleVisibility 属性还控制对象句柄是否显示在父图窗的 CurrentObject 属性中。句柄即使在不可见时也仍有效。如果可以访问某个对象,则可以设置和获取其属性,并将其传递给针对对象进行运算的任意函数。

HandleVisibility 值说明
'on'对象句柄始终可见。
'callback'对象句柄在回调或回调所调用的函数中可见,但在从命令行调用的函数中不可见。此选项阻止通过命令行访问对象,但允许回调函数访问它。
'off'对象句柄始终不可见。该选项用于防止另一函数无意中对 UI 进行更改。将 HandleVisibility 设置为 'off' 可在执行该函数时暂时隐藏句柄。

可以将图形根的 ShowHiddenHandles 属性设置为 'on' 以使所有句柄可见,而不管其 HandleVisibility 值如何。此设置对其 HandleVisibility 值没有任何影响。

标识符

全部展开

此属性为只读

图形对象的类型,以 'uitabgroup' 形式返回。

对象标识符,指定为字符向量或字符串标量。您可以指定唯一的 Tag 值作为对象的标识符。如果需要访问您代码中其他位置的对象,可以使用 findobj 函数基于 Tag 值搜索对象。

用户数据,指定为任何数组。指定 UserData 对在 App 内共享数据很有用。有关详细信息,请参阅在回调之间共享数据

兼容性考虑

全部展开

从 R2020a 起不建议使用

在 R2014b 中推出