Main Content

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

ToggleTool 属性

控制切换工具的外观和行为

切换工具是显示在图窗顶部工具栏中的切换按钮。uitoggletool 函数在工具栏中创建一个切换按钮并在显示它之前设置任何必需属性。通过更改属性值,您可以修改按钮外观和行为的某些方面。使用圆点表示法引用特定的对象和属性。

tt = uitoggletool;
tt.Separator = 'on';

切换工具

全部展开

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

此属性值为 'on' 时,切换按钮显示为处于压下(按下)位置。此属性值为 'off' 时,切换按钮显示为处于抬起位置。更改状态会导致执行相应的 OnCallbackOffCallback 函数。

图标源或文件,指定为字符向量、字符串标量或 m×n×3 真彩色图像数组。如果指定字符向量或字符串标量,它可以是 MATLAB® 路径中的图像文件名或图像文件的完整路径。如果您计划与他人共享您的 App,请将图像文件放在 MATLAB 路径中以便于打包 App。支持的图像格式包括 JPEG、PNG、GIF 和 SVG。

如果指定 m×n×3 数组,它将解释为真彩色图像数组。有关真彩色图像数组的详细信息,请参阅图像类型

如果您指定的图像大于 16×16 像素,则 Icon 属性会缩小图像,使整个图像适应该工具。如果您指定的图像小于 16×16 像素,则不会放大图像来适应可用空间。

Icon 属性仅在使用 App 设计工具创建的 App 和基于 uifigure 的 App 中受支持。如果同时设置了 IconCData 属性,则忽略 CData 属性。

示例: 'icon.png' 指定 MATLAB 路径中的一个图像文件。

示例: 'C:\Documents\icon.png' 指定图像文件的完整路径。

图像数组,指定为 m×n×3 真彩色图像数组。数组中的值可以是:

  • 介于 0.01.0 之间的双精度值

  • 介于 0255 之间的 uint8

为防止图像出现裁剪或失真,请指定 mn 小于或等于 16 的数组。如果图像被裁剪,则仅使用数组的中心 16×16 部分。

注意

对于使用 App 设计工具创建的 App 和基于 uifigure 的 App,请改用 Icon 属性来指定按钮工具和切换工具图标。

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

将此属性设置为 'on' 将在工具栏上的工具左侧绘制一条分隔线。

交互性

全部展开

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

  • 'on' - 显示对象。

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

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

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

  • 如果您将此属性设置为 'on',则 App 用户可以与组件进行交互。

  • 如果您将此属性设置为 'off',组件将灰显,指示 App 用户无法与其交互,并且它不会触发回调。

工具提示,指定为字符向量、字符串标量或分类数组。使用此属性可在鼠标指针悬停在运行的 App 中的组件上时显示一条消息。当该组件被禁用时,工具提示不会出现。如果将此属性指定为分类数组,MATLAB 将使用数组中的值,而不是完整的类别集。

在使用 uifigure 函数创建的图窗中,按钮工具和切换工具支持多行工具提示。要创建多行工具提示,请使用 sprintf 函数在文本中插入换行符 ('\n')。例如:

txt = sprintf('Line 1\nLine 2');

然后将 Tooltip 属性设置为 sprintf 返回的值。

在使用 figure 函数创建的图窗中,按钮工具和切换工具不支持多行工具提示。

设置此属性对此类型的对象没有影响。

工具提示,指定为字符向量、字符串标量或分类数组。当您将鼠标悬停在 App 中的组件上时,会出现工具提示。如果将此属性指定为分类数组,MATLAB 将使用数组中的值,而不是完整的类别集。

注意

从 R2018b 开始,不推荐使用 TooltipString 属性。请改用 Tooltip 属性。

回调

全部展开

工具被点击后的回调,指定为下列值之一:

  • 函数句柄。

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

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

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

数据类型: function_handle | cell | char

打开切换工具时执行的回调,指定为下列值之一:

  • 函数句柄。

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

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

当用户打开切换工具时将执行此回调。

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

数据类型: function_handle | cell | char

关闭切换工具时执行的回调,指定为下列值之一:

  • 函数句柄。

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

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

当用户关闭切换工具时将执行此回调。

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

数据类型: function_handle | cell | char

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

  • 函数句柄。

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

  • 包含有效 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 属性的值,以确认它不是待删除项。

此属性对此类型的对象没有影响。

父级/子级

全部展开

父对象,指定为 Toolbar 对象。使用此属性可在创建工具时指定父工具栏,或将现有工具移动到其他工具栏上。

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

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

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

标识符

全部展开

此属性为只读

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

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

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

在 R2006a 之前推出