Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

TabGroup 属性

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

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

fig = uifigure;
tg = uitabgroup(fig);
tg.Position = [20 20 200 200];

此处列出的属性对 App 设计工具中的或使用 uifigure 函数创建的 App 中的选项卡组有效。对于 GUIDE 中使用的选项卡组,或通过 figure 函数创建的 App 中使用的选项卡组,请参阅 TabGroup 属性

选项卡

全部展开

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

当前选择的选项卡,指定为 Tab 对象。使用此属性可确定选项卡组中当前选定的选项卡。您也可以使用此属性设置默认选项卡选项。SelectedTab 属性的默认值是您添加到 TabGroup 中的第一个 Tab

交互性

全部展开

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

  • 'on' - 显示对象。

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

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

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

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

工具提示,指定为字符向量、字符向量元胞数组、字符串数组或分类数组。使用此属性可使用户在运行时将指针悬停在选项卡组上时显示消息。仅当选项卡组中没有选项卡时,才会显示选项卡组的工具提示。要显示多行文本,请指定字符向量元胞数组、字符串数组或分类数组。数组中的每个元素变为一行文本。如果将此属性指定为分类数组,MATLAB® 将使用数组中的值,而不是完整的类别集。

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

位置

全部展开

选项卡组的位置和大小,指定为 [left bottom width height] 形式的四元素向量。

此表介绍该向量中的每个元素。

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

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

Position 值相对于父容器的可绘制区域。可绘制区域是指容器边框内的区域,不包括装饰元素(如菜单栏或标题)所占的区域。

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

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

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

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

测量单位,指定为 'pixels'

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

  • 'on' - 当容器调整大小时,子组件会自动调整大小。

  • 'off' - 子组件不调整大小。

AutoResizeChildren 属性影响容器的直接子组件,而不影响嵌套容器内的子组件。

要自定义调整大小行为,请将 AutoResizeChildren 属性设置为 'off' 并为容器创建 SizeChangedFcn 回调。有关详细信息,请参阅在 App 设计工具中管理可调整大小的 App

要禁用 App 的大小调整,请将图窗的 Resize 属性设置为 'off'

布局选项,指定为 GridLayoutOptions 对象。此属性为网格布局容器的子级组件指定选项。如果组件不是网格布局容器的子级(例如,它是图窗或面板的子级),则此属性为空且不起作用。但是,如果组件是网格布局容器的子级,则可以通过在 GridLayoutOptions 对象上设置 RowColumn 属性,将组件放置在网格的所需行和列中。

例如,以下代码将一个选项卡组放置在其父网格的第三行第二列中。

g = uigridlayout([4 3]);
tg = uitabgroup(g);
tg.Layout.Row = 3;
tg.Layout.Column = 2;

要使该选项卡组跨多个行或列,请将 RowColumn 属性指定为二元素向量。例如,此选项卡组跨列 23

tg.Layout.Column = [2 3];

回调

全部展开

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

  • 函数句柄。

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

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

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

此回调函数可以访问有关用户与选项卡的交互的特定信息。MATLAB 将 SelectionChangedData 对象中的此信息作为第二个参数传递给回调函数。在 App 设计工具中,该参数名为 event。您可以使用圆点表示法查询对象属性。例如,event.NewValue 返回当前选择的选项卡。SelectionChangedData 对象不可用于指定为字符向量的回调函数。

下表列出了 SelectionChangedData 对象的属性。

属性

说明

OldValue

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

NewValue

当前选择的 Tab

Source

执行回调的组件

EventName

'SelectionChanged'

有关编写回调的详细信息,请参阅在 App 设计工具中编写回调

更改大小时执行的回调,指定为下列值之一:

  • 函数句柄。

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

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

定义此回调在此容器的大小更改时(例如,当用户调整窗口大小时)自定义 App 布局。在其中编写代码来调整子组件的 Position 属性。

注意

除非此容器的 AutoResizeChildren 属性设置为 'off',否则 SizeChangedFcn 回调将不会执行。在 App 设计工具中,您可以通过选择容器并清除组件浏览器检查器选项卡中的 AutoResizeChildren 复选框,使 SizeChangedFcn 可执行。

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

  • 此容器首次变得可见。

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

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

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

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

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

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

指定调整大小行为的替代方法是创建 GridLayout 对象或使用 App 设计工具中的自动调整布局选项。这些选项比 SizeChangedFcn 回调更容易使用。然而,与这些选项相比,SizeChangedFcn 回调有一些优势。例如:

  • 将组件调整到您定义的最小或最大大小。

  • 实现非线性调整大小行为,例如根据父容器的大小更改组件的大小。

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

  • 函数句柄。

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

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

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

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

对象创建函数,指定为下列值之一:

  • 函数句柄。

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

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

有关将回调指定为函数句柄、元胞数组或字符向量的详细信息,请参阅在 App 设计工具中编写回调

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

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

如果将此属性指定为函数句柄或元胞数组,则可以使用回调函数的第一个参数访问正在创建的对象。否则,使用 gcbo 函数访问该对象。

对象删除函数,指定为下列值之一:

  • 函数句柄。

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

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

有关将回调指定为函数句柄、元胞数组或字符向量的详细信息,请参阅在 App 设计工具中编写回调

此属性指定在 MATLAB 删除对象时要执行的回调函数。MATLAB 在销毁对象的属性之前执行 DeleteFcn 回调。如果不指定 DeleteFcn 属性,则 MATLAB 执行默认的删除函数。

如果将此属性指定为函数句柄或元胞数组,则可以使用回调函数的第一个参数访问要删除的对象。否则,使用 gcbo 函数访问该对象。

回调执行控件

全部展开

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

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

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

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

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

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

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

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

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

注意

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

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

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

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

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

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

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

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

无论何时 MATLAB 调用回调,该回调都会试图中断运行中回调。运行中回调所属对象的 Interruptible 属性决定着是否允许中断。如果不允许中断,则中断回调所属对象的属性 BusyAction 将决定是放弃该回调还是将回调放入队列中。以下是 BusyAction 属性的可能值:

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

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

此属性为只读

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

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

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

父级/子级

全部展开

父容器,指定为使用 uifigure 函数创建的 Figure 对象或其子容器之一:TabPanelButtonGroupGridLayout。如果未指定容器,MATLAB 将调用 uifigure 函数以创建一个新 Figure 对象来充当父容器。

TabGroup 的子级,以空 GraphicsPlaceholderTab 对象的一维数组形式返回。

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

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

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

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

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

标识符

全部展开

此属性为只读

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

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

用户数据,指定为任何 MATLAB 数组。例如,您可以指定标量、向量、矩阵、元胞数组、字符数组、表或结构体。使用此属性存储对象上的任意数据。

如果您在 App 设计工具中工作,请在该 App 中创建公共或私有属性以共享数据,而不是使用 UserData 属性。有关详细信息,请参阅在用 App 设计工具创建的 App 内共享数据

另请参阅

函数

属性

在 R2016a 中推出