MATLAB中uitabgroup函数用法

本文详细介绍了MATLAB中的uitabgroup函数,如何创建包含选项卡的容器,设置选项卡属性,如位置、标题和滚动功能。还讲解了如何编写选项卡切换的回调程序,以便在用户行为改变时执行特定操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

语法

说明

示例

包含两个选项卡的选项卡组

选项卡组中的可滚动选项卡

编写选项卡切换响应程序


        uitabgroup函数的功能是创建包含选项卡式面板的容器。

语法

tg = uitabgroup
tg = uitabgroup(Name,Value)
tg = uitabgroup(parent)
tg = uitabgroup(parent,Name,Value)

说明

        tg = uitabgroup 在当前图窗中创建一个选项卡组并返回 TabGroup 对象。如果没有可用的图窗,MATLAB® 将调用 figure 函数创建一个图窗。选项卡组是选项卡的容器。它们允许标识选定的选项卡,并检测用户何时选择了不同的选项卡。

        tg = uitabgroup(Name,Value) 使用一个或多个名称-值参数指定选项卡组属性值。例如,可以指定选项卡组的位置或选项卡标签的位置。

        tg = uitabgroup(parent) 在指定的父容器中创建选项卡组。父容器可以是使用 figure 或 uifigure 函数创建的图窗,也可以是子容器(如面板)。uitabgroup 的属性值略有不同,具体取决于该 App 是使用 figure 还是 uifigure 函数创建的。具体可以参考名称-值参数。

        tg = uitabgroup(parent,Name,Value) 指定父容器和一个或多个属性值。

示例

包含两个选项卡的选项卡组

        创建一个图窗,其中包含一个选项卡组和两个选项卡。

f = figure;
tabgp = uitabgroup(f,"Position",[.05 .05 .3 .8]);
tab1 = uitab(tabgp,"Title","Settings");
tab2 = uitab(tabgp,"Title","Options");

如图所示:

获取当前选择的选项卡。

currenttab = tabgp.SelectedTab
currenttab = 

  Tab (Settings) with properties:

              Title: 'Settings'
    BackgroundColor: [0.9400 0.9400 0.9400]
           Position: [0.0119 0.0089 0.9702 0.9107]
              Units: 'normalized'

选项卡组中的可滚动选项卡

​        Scrollable 属性支持在选项卡内的组件超出边框时启用滚动。要使用滚动功能,图窗必须使用 uifigure 函数创建。App 设计工具使用此类型的图窗来创建 App。

        创建包含一个选项卡的选项卡组。向该选项卡添加六个 UI 组件,前三个组件位于选项卡的上边框的外部。

fig = uifigure;
tg = uitabgroup(fig,"Position",[20 20 196 145]);
t = uitab(tg,"Title","Member Information");
ef1 = uieditfield(t,"Text","Position",[11 165 140 22],"Value","First Name");
ef2 = uieditfield(t,"Text","Position",[11 140 140 22],"Value","Last Name");
ef3 = uieditfield(t,"Text","Position",[11 115 140 22],"Value","Address");
dd = uidropdown(t,"Position",[11 90 140 22],"Items",{'Male','Female'});
cb = uicheckbox(t,"Position",[11 65 140 22],"Text","Member");
b = uibutton(t,"Position",[11 40 140 22],"Text","Send");

如图所示:

        通过将选项卡的 Scrollable 属性设置为 "on" 来启用滚动。默认情况下,滚动条显示在顶部。

t.Scrollable = "on";

如图所示:

编写选项卡切换响应程序

        在新脚本中,在 UI 图窗中创建一个具有两个选项卡的选项卡组。将 SelectionChangedFcn 属性指定为名为 displaySelection 的函数的句柄。当用户在选项卡组中的选项卡之间切换时,将执行此函数。

        在脚本的底部,定义 displaySelection 函数来接受 MATLAB 传递给回调函数的两个输入参数:

  • src - 执行回调的组件

  • event - 关于触发回调的用户交互的信息

        在回调函数中,编写代码以在命令行窗口中显示可见选项卡的标题。

fig = uifigure;
tg = uitabgroup(fig,"SelectionChangedFcn",@displaySelection);
t1 = uitab(tg,"Title","Data");
t2 = uitab(tg,"Title","Plots");

function displaySelection(src,event)
    t = event.NewValue;
    title = t.Title;
    disp("Viewing the " + title + " tab")
end

        运行脚本并在选项卡之间切换以显示选项卡标题。

参数说明

parent — 父容器

​父容器,指定为使用 figure 或 uifigure 函数创建的图窗或子容器:

  • 面板、选项卡和按钮组可以是任一类型的图窗中的容器。

  • 网格布局是只能位于使用 uifigure 函数创建的图窗中的容器。

SelectedTab — 当前选择的选项卡

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

SelectionChangedFcn — 所选内容改变时的回调

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

  • 函数句柄。

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

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

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

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

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

属性

描述

OldValue

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

NewValue

当前选择的 Tab

Source

执行回调的组件

EventName

'SelectionChanged'

TabLocation — 选项卡标签位置

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

Position — 选项卡组的位置和大小

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

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

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

        ​所有测量值都采用 Units 属性指定的单位。Position 值相对于父容器的可绘制区域。可绘制区域是指容器边框内的区域,不包括装饰元素(如菜单栏或标题)所占的区域。

​Units — 测量单位

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

单位值描述
'pixels'(基于 uifigure 的 App 中的默认值)

以像素为单位的距离不依赖 Windows® 和 Macintosh 系统上的系统分辨率:

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

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

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

'normalized'(基于 figure 的 App 中的默认值)

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

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

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

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

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

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

        ​推荐值为 'pixels',因为大多数 MATLAB App 构建功能都以像素为单位测量距离。可以创建一个对象,该对象根据父容器的大小重新缩放,方法是将使用 uigridlayout 函数创建的一个网格布局管理器作为该对象的父级。

如何在MATLAB中做出标签页的效果-tabgui.m 刚才看到有会员朋友说matlab中控件少,math说ActiveX中多的是啊,于是我也就顺便打开ActiveX看看里面都有什么。突然看到个单词tabbed……难道这就是困扰我多日的标签页?(已经解决)遗憾的是不知道为什么在我这里这个Microsoft Tabbed Dialog Control 6.0(SP5)不能用,显示的错误是Error using--->feval。Error 类别未授权使用,所以我连预览也不能。哪位兄弟知道解决方法别忘了给我发个消息啊,言归正传,继续说标签页。到mathworks一搜,果然是有高人的。 关于标签页的制作给出了三种方法,第一种就不介绍给大家了,因为时间久远到现在改方法已经失效,但是也放在附件中供大家参考就是那个tab。第二种是让我眼前一亮的。使用方法是这样:首先建立一个figure,并在其中加入一个Text控件,需要注意的是这个text控件所在的位置就是将来标签页所在的位置,然后将附件中的tabpanel2.6中的文件放到figure同目录下,然后在命令行输入 tabpanel,第一个参数是figure的名字,第二个参数是刚才加入的text控件的tag。这时候等侯一下,会出现一个运行的figure和一个小面板,在面板上有几项分别是(从上到下从左到右)添加标签、编辑标签、更新标签、当前标签前移、当前标签后移、设置、信息。这是点击第一个,就可以添加标签页了,大家自己试试就明白了,然后可以设置标签的lable、尺寸、风格、排列、颜色……非常方便。如果点击编辑标签,出来一个新的GUIDE,别怀疑,就在上面添加控件就可以了,添加完保存然后回到这个小面板点击更新标签,刚才添加的控件就出现了。大家可以试试。 第三种方法是用matlab的一个函数:tabdlg,但是这个函数的使用帮助在新版本中已经没有了,因为以后的版本中要改变这个函数,不过还是有个列子是用这个函数创建标签页的,附件中的tabgui.m就是对应的程序,直接运行就可以,典型的matlab风格。各位可以仿照程序的编写方法在它的基础上创建控件。 另外还有一种方法,就是我前一阵子写程序时用的,就是与JAVA混合编程。这个就比较麻烦了,对JAVA甚至C 一窍不通的就掠过吧。这其中涉及到了JAVA的布局、容器、框架等等。附件中的text.m是对应的文件。 总是抑制不住自己冲动的心情想把好玩的东西告诉别人。见谅。 前三种方法转自mathworks 与JAVA混合的方法转自仿真论坛。 本人无才只能跟风。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值