Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

uislider

创建滑块组件

说明

sld = uislider 在新图窗窗口中创建一个滑块,并返回 Slider 对象。MATLAB® 调用 uifigure 函数来创建该图窗。

示例

sld = uislider(parent) 在指定的父容器中创建滑块。父容器可以是使用 uifigure 函数创建的 Figure 对象或其子容器之一。

示例

sld = uislider(___,Name,Value) 使用一个或多个名称-值参数指定 Slider 属性。例如,uislider("Value",50) 创建一个值为 50 的滑块。可将此选项与上述语法中的任何输入参数组合一起使用。

示例

全部折叠

在 UI 图窗中创建一个滑块组件。

fig = uifigure;
sld = uislider(fig);

Figure contains an object of type uislider.

在 UI 图窗中创建一个垂直滑块。

fig = uifigure;
sld = uislider(fig,"Orientation","vertical");

Figure contains an object of type uislider.

在 UI 图窗中创建一个滑块。将滑块值设置为 50。

fig = uifigure;
sld = uislider(fig,"Value",50);

Figure contains an object of type uislider.

确定当前滑块控件的范围。

limits = sld.Limits
limits = 1×2

     0   100

更改滑块控件的范围,将值设置为 35。

sld.Limits = [-50 50];
sld.Value = 35;

Figure contains an object of type uislider.

在 UI 图窗中创建一个滑块。

fig = uifigure;
sld = uislider(fig);

Figure contains an object of type uislider.

自定义滑块外观。更新范围和主刻度以对应以华氏度为单位的温度,并删除次刻度。

sld.Limits = [32 212];
sld.MajorTicks = [32 100 150 212];
sld.MajorTickLabels = sld.MajorTicks + "°F";
sld.MinorTicks = [];

Figure contains an object of type uislider.

创建一个具有滑块和仪表的 App。当 App 用户移动滑块并释放鼠标按键时,仪表的指针将更新以反映滑块值。

在名为 sliderApp.m 的文件中,编写实现该 App 的函数:

  • 创建一个 UI 图窗和一个网格布局管理器,以对该 App 进行布局。

  • 在网格布局管理器中创建一个仪表和一个滑块。

  • Write a callback function named updateGauge that changes the gauge value to match the slider value, and assign the function to the ValueChangedFcn callback property of the slider.有关回调的详细信息,请参阅Create Callbacks for Apps Created Programmatically

function sliderApp
fig = uifigure("Position",[100 100 300 250]);
g = uigridlayout(fig);
g.RowHeight = {'1x','fit'};
g.ColumnWidth = {'1x','fit','1x'};

cg = uigauge(g);
cg.Layout.Row = 1;
cg.Layout.Column = [1 3];

sld = uislider(g, ...
    "ValueChangedFcn",@(src,event)updateGauge(src,event,cg));
sld.Layout.Row = 2;
sld.Layout.Column = 2;
end

function updateGauge(src,event,cg)
cg.Value = event.Value;
end

运行 sliderApp 函数并移动滑块。释放滑块时,仪表的值会更新。

sliderApp

Figure contains an object of type uigridlayout.

创建一个包含滑块和仪表的 App。当 App 用户移动滑块时,仪表的指针将立即更新以反映滑块值。

在名为 sliderApp2.m 的文件中,编写实现该 App 的函数:

  • 创建一个 UI 图窗和一个网格布局管理器,以对该 App 进行布局。

  • 在网格布局管理器中创建一个仪表和一个滑块。

  • Write a callback function named updateGauge that changes the gauge value to match the slider value, and assign the function to the ValueChangingFcn callback property of the slider.有关回调的详细信息,请参阅Create Callbacks for Apps Created Programmatically

function sliderApp2
fig = uifigure("Position",[100 100 300 250]);
g = uigridlayout(fig);
g.RowHeight = {'1x','fit'};
g.ColumnWidth = {'1x','fit','1x'};

cg = uigauge(g);
cg.Layout.Row = 1;
cg.Layout.Column = [1 3];

sld = uislider(g, ...
    "ValueChangingFcn",@(src,event)updateGauge(src,event,cg));
sld.Layout.Row = 2;
sld.Layout.Column = 2;
end

function updateGauge(src,event,cg)
cg.Value = event.Value;
end

运行 sliderApp2 函数并移动滑块。当您拖动滑块时,仪表指针会移动。

sliderApp2

Figure contains an object of type uigridlayout.

输入参数

全部折叠

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

名称-值参数

将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参数名称,Value 是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。

示例: uislider(Limits=[0 50]) 将滑块最小值指定为 0,将滑块最大值指定为 50

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: uislider("Limits",[0 50]) 将滑块最小值指定为 0,将滑块最大值指定为 50

此处所列的属性只是可用属性中的一部分。有关完整列表,请参阅 Slider 属性

滑块值,指定为数值。数值必须在 Limits 属性值指定的范围内。

数据类型: double

滑块的最小值和最大值,指定为二元素数值数组。第一个值必须小于第二个值。

如果您更改 Limits,使得 Value 属性小于新的下限值,MATLAB 属性会将 Value 设置为新的下限值。例如,假设 Limits 属性为 [0 100]Value 为 20。如果 Limits 更改为 [50 100],MATLAB 会将 Value 属性设置为 50。

同样,如果您更改 Limits,使得 Value 属性大于新的上限值,MATLAB 会将 Value 属性设置为新的上限值。

数据类型: double

主刻度线位置,指定为数值向量或空向量。如果您不想显示主刻度线,请将此属性指定为空向量。

超出 Limits 属性范围的刻度位置不显示。

MATLAB 将删除重复的刻度值。但是,如果主刻度与次刻度落在相同的值上,则只显示主刻度。

如果设置 MajorTicks 属性,会将 MajorTicksMode 属性设置为 'manual'

主刻度标签,指定为字符向量元胞数组、字符串数组或一维分类数组。如果您不想显示刻度标签,请将此属性指定为空元胞数组。如果要删除特定刻度线上的标签,请为 MajorTickLabels 数组中的对应元素指定空字符向量或空字符串标量。如果将此属性指定为分类数组,MATLAB 将使用数组中的值,而不是完整的类别集。

如果 MajorTickLabels 数组的长度与 MajorTicks 向量的长度不同,MATLAB 将忽略较长的那个数组中的多余条目。如果有多余的标签,这些标签将被忽略。如果有多余的刻度线,将显示这些刻度线但不带标签。

如果设置 MajorTickLabels,会将 MajorTickLabelsMode 值更改为 'manual'

注意

MajorTicksMode'auto' 时,设置 MajorTickLabels 可能导致意外结果。要避免这种情况,请将 MajorTicksMode 设置为 'manual',并在设置 MajorTickLabels 之前手动指定 MajorTicks 的值。

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

  • 函数句柄。

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

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

当用户将滑块移动到滑块控件上的不同位置时,将会执行此回调。如果以编程方式更改滑块值,将不会执行此回调。

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

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

属性
Value滑块在 App 用户最近一次与它交互之后的值
PreviousValue滑块在 App 用户最近一次与它交互之前的值
Source执行回调的组件
EventName'ValueChanged'

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

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

  • 函数句柄。

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

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

当用户沿 App 中的滑块控件移动滑块时,将会执行此回调。如果以编程方式更改 Value 属性,将不会执行此回调函数。

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

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

属性
Value滑块在 App 用户与它交互时的当前值
Source执行回调的组件
EventName'ValueChanging'

在用户释放滑块之前,Slider 对象的 Value 属性不会更新。因此,要获取移动滑块时的值,您的代码必须获取 ValueChangingData 对象的 Value 属性。

注意

请避免从其自己的 ValueChangingFcn 回调中更新 Slider 对象的 Value 属性,因为这可能导致意外行为。要更新滑块值以响应用户输入,请改用 ValueChangedFcn 回调。

ValueChangingFcn 回调按照如下方式执行:

  • 如果 App 用户点击滑块值一次,回调将执行一次。例如,如果滑块在 1.0 的位置,App 用户在 1.1 位置单击一次,回调将执行一次。

  • 如果 App 用户点击滑块并将其拖动到新位置,回调将重复执行。例如,如果滑块值为 1.0,App 用户点击、按住并将滑块拖动到值 10.0 处,回调将执行多次,直到 App 用户释放滑块为止。

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

滑块的位置和大小,不包括刻度线和标签,指定为向量 [left bottom width height]。此表介绍该向量中的每个元素。

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

所有测量值都以像素为单位。

Orientation 属性值为 'horizontal' 时,不能更改滑块的高度。同样,当 Orientation 属性值为 'vertical' 时,不能更改滑块的宽度。

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

示例: [100 200 60 60]

版本历史记录

在 R2016a 中推出

另请参阅

函数

属性

工具