Main Content

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

drag

类: matlab.uitest.TestCase
命名空间: matlab.uitest

对 UI 组件执行拖动手势

说明

示例

drag(testcase,comp,start,stop) 对 UI 组件 comp 执行从 startstop 的拖动手势。

示例

drag(testcase,compst,start,stop,'SelectionType',type) 使用指定的鼠标选择类型 type 对组件 compst 执行拖动手势。

输入参数

全部展开

测试用例的实例,指定为 matlab.uitest.TestCase 对象。

测试期间要拖动的组件,指定为支持拖动手势的 UI 组件对象。支持拖动手势的组件有坐标区、连续旋钮、滑块和图窗。

支持的组件典型的创建函数
坐标区axes
旋钮uiknob
滑块uislider
UI 坐标区uiaxes
UI 图窗uifigure

拖动手势的起始值,指定为数值标量或者 1×2 或 1×3 数值数组。start 的形式取决于 UI 组件:

  • 旋钮和滑块 - 组件范围内的数值标量。范围由组件的 Limits 属性定义。

  • 坐标区和 UI 坐标区 - 1×2 或 1×3 数值数组,其中包含 x、y 以及可选的 z 坐标。

  • UI 图窗 - 1×2 数值数组,其中包含 x 和 y 坐标。指定点的坐标,以组件左下角为起点测量(以像素为单位)。

示例: 20(旋钮)

示例: [2.5 3 1.25](UI 坐标区)

示例: [100 200](UI 图窗)

拖动手势的终止值,指定为数值标量或者 1×2 或 1×3 数值数组。stop 的形式取决于 UI 组件:

  • 旋钮和滑块 - 组件范围内的数值标量。范围由组件的 Limits 属性定义。

  • 坐标区和 UI 坐标区 - 1×2 或 1×3 数值数组,其中包含 x、y 以及可选的 z 坐标。

  • UI 图窗 - 1×2 数值数组,其中包含 x 和 y 坐标。指定点的坐标,以组件左下角为起点测量(以像素为单位)。

示例: 30(旋钮)

示例: [5 3 2.25](UI 坐标区)

示例: [200 300](UI 图窗)

在测试过程中使用给定的鼠标选择类型拖动的组件,指定为 matlab.graphics.axis.Axesmatlab.ui.control.UIAxesmatlab.ui.Figure 对象。

支持的组件典型的创建函数
坐标区axes
UI 坐标区uiaxes
UI 图窗uifigure

鼠标选择类型,指定为 'normal''extend''alt'。此输入提供关于在组件中如何按下鼠标按键的信息。有关详细信息,请参阅 UI Figure 属性

下表列出了可能的选择类型值以及这些值对应的动作。

对应的操作

'normal'

点击鼠标左键。

'extend'

Shift-点击鼠标左键。

'alt'

点击鼠标右键。

数据类型: char | string

示例

全部展开

创建一个旋钮。

knob = uiknob;

创建一个交互式测试用例并在两个值之间拖动旋钮。当旋钮到达终止值时,表示编程拖动手势的蓝点出现,然后消失。

tc = matlab.uitest.TestCase.forInteractiveUse;
tc.drag(knob,13,42)

创建一个最小值为 -237、最大值为 237、起始值为 7 的滑块。

slider = uislider('Limits',[-237 237],'Value',7);

创建一个交互式测试用例并验证滑块的初始值。

tc = matlab.uitest.TestCase.forInteractiveUse;
tc.verifyEqual(slider.Value,7)
Verification passed.

在两个值之间拖动滑块并验证最终值。由于框架模仿用户将组件移动到任意精确值的操作,因此最好使用容差来比较实际滑块值和预期滑块值。

val = 26.75;
tc.drag(slider,-val,val)
tc.verifyEqual(slider.Value,val,'AbsTol',0.1)
Verification passed.

在 UI 图窗中创建一个坐标区,然后在该坐标区中绘制一个线条。在此示例中,图将 x 轴和 y 轴的范围都设置为 [1 10]。

f = uifigure;
ax = axes(f);
plot(ax,1:10)

创建一个交互式测试用例,并从点 (3, 2) 拖动到点 (4, 2)。一个表示编程拖动手势的蓝点出现在起始值处,然后在到达终止值时消失。轴范围根据起始值和终止值之间的差进行更新。

tc = matlab.uitest.TestCase.forInteractiveUse;
tc.drag(ax,[3 2],[4 2])

验证拖动手势将 x 轴范围减少了一个单位。由于框架模拟用户操作组件,因此推荐使用容差来比较实际值和预期值。

tc.verifyEqual(ax.XLim,[0 9],'AbsTol',0.1)
Verification passed.

在 UI 图窗中创建一个坐标区,并使用 peaks 函数在该坐标区中绘制一个曲面。然后,调用 view 函数为坐标区保存相机视线的方位角和仰角。

f = uifigure;
ax = axes(f);
surf(ax,peaks)
xlabel(ax,'X')
ylabel(ax,'Y')
zlabel(ax,'Z')
[caz_before,cel_before] = view(ax);

创建一个交互式测试用例,并从点 (2, 2, -10) 拖动到点 (4, 4, 10)。一个表示编程拖动手势的蓝点出现在起始值处,然后在到达终止值时消失。曲面图的视图会随着拖动而更改。

tc = matlab.uitest.TestCase.forInteractiveUse;
tc.drag(ax,[2 2 -10],[4 4 10])

验证拖动手势更改了曲面图的视图。

[caz_after,cel_after] = view(ax);
tc.verifyNotEqual([caz_after cel_after],[caz_before cel_before])
Verification passed.

在 UI 图窗中创建一个坐标区,然后在该坐标区中绘制一个线条。

f = uifigure;
ax = axes(f);
plot(ax,1:10)

创建一个交互式测试用例,用鼠标右键点击在图窗上从点 (100, 200) 拖到点 (200, 300)。一个表示编程拖动手势的蓝点出现在起始值处,然后在到达终止值时消失。

tc = matlab.uitest.TestCase.forInteractiveUse;
tc.drag(f,[100 200],[200 300],'SelectionType','alt')

现在,用左键点击在坐标区上从点 (3, 2) 拖动到点 (4, 2)。轴范围根据起始值和终止值之间的差进行更新。

tc.drag(ax,[3 2],[4 2],'SelectionType','normal')

版本历史记录

在 R2018a 中推出

全部展开