App 设计工具中的回调

news2024/12/25 15:27:52

目录

创建回调函数

回调函数编程

回调输入参数

在回调函数之间共享数据

在多个组件之间共享回调

以编程方式创建和分配回调

在代码中搜索回调

更改回调或断开与回调的连接

删除回调

示例:具有滑块回调的 App


        回调是在用户与 App 中的 UI 组件交互时执行的函数。可以使用回调对 App 的行为进行编程。例如,可以编写一个回调函数,用于在 App 用户点击按钮时绘制一些数据;或编写另一个回调函数,用于在用户与滑块交互时移动仪表组件的指针。

        大多数组件有至少一个回调,每个回调与该组件的一个特定交互绑定。但是,某些组件(如标签和信号灯)没有回调,因为这些组件仅显示信息。要查看某个组件支持的回调的列表,请选择该组件,然后点击组件浏览器中的回调选项卡。

创建回调函数

为 UI 组件创建回调有多种方法。根据您在 App 设计工具中的工作位置,可以采用不同方法。从列表中选择最方便的方法:

  • 右键点击画布中的一个组件、组件浏览器或 App 布局窗格,然后选择回调 > 添加(回调属性)回调

    Context menu associated with a slider component. Under the Callbacks menu item, there are options to add a ValueChangedFcn callback or a ValueChangingFcn callback.

  • 组件浏览器中选择回调选项卡。回调选项卡的左侧显示支持的回调属性。可以通过每个回调属性旁边的下拉列表来指定回调函数的名称,也可以选择尖括号<>中的默认名称。如果App 有现有回调,则下拉列表中会包含这些回调。当需要多个 UI 组件执行相同代码时,请选择一个现有回调。

  • 在代码的代码视图中,在编辑器选项卡中点击 

     回调。或者,在代码浏览器窗格的回调选项卡上,点击 

    Plus

     按钮。

    Add Callback Function dialog box. There are options to choose a component and a callback from drop-down lists, and to specify the callback function name.

    在“添加回调函数”对话框中指定这些选项:

    • 组件 - 指定执行回调的 UI 组件。

    • 回调 - 指定回调属性。回调属性将回调函数映射到特定交互。某些组件具有多个可用的回调属性。例如,滑块具有两个回调属性:ValueChangedFcn 和 ValueChangingFcn。ValueChangedFcn 回调在用户移动滑块并释放鼠标后执行。用户移动滑块时,同一组件的 ValueChangingFcn 回调会重复执行。

    • 名称 - 为回调函数指定名称。App 设计工具会提供默认名称,但可以在文本字段中更改该名称。如果App 有现有回调,则名称字段旁边会有一个下拉箭头,表示可以从列表中选择一个现有回调。

回调函数编程

        为组件创建回调时,App 设计工具会在代码视图中生成回调函数,并将光标放在该函数中。在此回调函数中编写代码,对回调行为进行编程。

回调输入参数

App 设计工具创建的所有回调函数的函数签名中都有这些输入参数:

  • app - app 对象。使用此对象访问 App 中的 UI 组件以及存储为属性的其他变量。

  • event - 包含有关 App 用户与 UI 组件交互的特定信息的对象。

        app 参数为回调提供 app 对象。可以使用以下语法访问任何回调中的任何组件(以及特定于组件的所有属性):

app.Component.Property

        例如,以下命令将仪表的 Value 属性设置为 50。在此示例中,仪表的名称为 PressureGauge:

app.PressureGauge.Value = 50;

        event 参数提供具有不同属性的对象,具体取决于正在执行的特定回调。对象属性包含与回调响应的交互类型相关的信息。例如,滑块的 ValueChangingFcn 回调中的 event 参数包含一个名为 Value 的属性。该属性在用户移动滑块(释放鼠标之前)时存储滑块值。以下是一个滑块回调函数,它使用 event 参数使仪表跟踪滑块的值:

function SliderValueChanging(app,event)
      latestvalue = event.Value; % Current slider value
      app.PressureGauge.Value = latestvalue;  % Update gauge   
end

        ​要了解有关特定组件回调函数的 event 参数的更多信息,请参阅该组件的属性页。右键点击组件,然后选择关于所选内容的帮助打开属性页。有关所有 UI 组件的属性页列表,可以参考App 构建组件。

在回调函数之间共享数据

        要存储需要由多个回调访问的数据,请创建一个属性。属性包含属于 App 的数据。可以创建私有属性来存储仅在 App 内部共享数据,或创建公共属性来存储要在 App 外部共享数据(例如,脚本、函数或其他需要访问数据的 App)。

        在代码视图编辑器选项卡中,点击 

        属性按钮,创建公共或私有属性。输入属性的名称。然后,可以使用语法 app.PropertyName 在所有 App 回调中指定和访问属性值。

在多个组件之间共享回调

        当要在App 中提供多种方法来执行某个操作时,在组件间共享回调非常有用。例如,当用户点击按钮或在编辑字段中按下 Enter 键时,App 可以用同样的方式响应。

        可以为回调类型相同的多个所选组件创建单个共享回调。例如,在一个包含一个编辑字段和一个滑块的 App 中,您可以同时选中这两个组件,右键点击其中一个,然后选择回调 > 添加 ValueChangingFcn 回调。App 设计工具会创建一个新回调,并将其分配给编辑字段和滑块。

        或者,为一个组件创建回调后,可以通过将其分配给另一个组件来共享它。在组件浏览器中右键点击第二个组件,然后选择回调 > 选择现有的回调。当显示“选择回调函数”对话框时,从名称下拉列表中选择现有的回调。

以编程方式创建和分配回调

        还可以在 App 代码中以编程方式创建和分配回调函数。使用此方法为未出现在组件浏览器中的组件或图形对象创建回调。例如,您可以通过编程方式将回调分配给在 App 代码中创建的对话框,或分配给在 UIAxes 组件中绘制的 Line 对象。

        通过在工具条的编辑器选项卡中选择函数 > 私有函数,将回调函数创建为私有函数。该函数必须将 app、src 和 event 作为前三个参数。下面是作为私有函数编写的回调的示例:

methods (Access = private)
    
        function myclosefcn(app,src,event)
            disp('Have a nice day!');
        end
        
end

        使用语法 @app. FunctionName 将回调属性值指定为回调函数的句柄,这样可将回调函数分配给组件。例如,以下代码创建一个警报对话框,该对话框将 myclosefcn 函数分配给 CloseFcn 回调属性。该函数在对话框关闭时执行。

uialert(app.UIFigure,"File not found","Alert", ...
    "CloseFcn",@app.myclosefcn);

        要编写接受附加输入参数的回调函数,请在前三个参数后指定附加参数。例如,以下回调接受一个额外的输入 name:

methods (Access = private)
    
        function displaymsg(app,src,event,name)
            msg = name + " dialog box closed";
            disp(msg);
        end
        
end

        要将此回调分配给一个组件,请将该组件的回调属性指定为元胞数组。该元胞数组中的第一个元素必须为函数句柄。后续元素必须为附加输入值。例如:

uialert(app.UIFigure,"File not found","Alert", ...
    "CloseFcn",{@app.displaymsg,"Alert"});

在代码中搜索回调

        如果App 有很多回调,您可以通过在代码浏览器中的回调选项卡顶部的搜索栏中键入部分名称,以快速搜索并导航到特定回调。开始键入后,回调窗格的内容将被清除,但会显示符合搜索条件的回调。

Callbacks tab of the Code Browser. The search bar has the text "Slider" and the pane lists the SliderValueChanging function.

        点击一个搜索结果以将回调滚动到视图中。右键点击搜索结果并选择转至会将光标置于回调函数中。

更改回调或断开与回调的连接

        要为组件分配不同回调,请在组件浏览器中选择该组件。然后点击回调选项卡,并从下拉列表中选择不同回调。下拉列表仅显示现有回调。

Callbacks tab for an edit field component in the Component Browser. The ValueChangedFcn drop-down list is expanded, and two existing callback functions are listed.

        要断开与组件共享的回调的连接,请在组件浏览器中选择该组件。然后点击回调选项卡,并从下拉菜单中选择 <没有回调>。选择此选项只会断开回调与组件的连接。它不会从代码中删除函数定义,也不会断开回调与任何其他组件的连接。断开与回调的连接后,可以为组件创建新回调,或使组件保持为不使用回调函数。

删除回调

        如果代码包含一个回调函数,而您的 App 中没有任何组件使用该函数,可以完全删除该函数。右键点击代码浏览器回调选项卡中的回调并从上下文菜单中选择删除,可删除回调。

Callbacks tab of the Code Browser. The context menu associated with the StopButtonPushed callback function has options to delete, rename, insert at cursor, and go to.

示例:具有滑块回调的 App

        以下 App 包含一个在用户移动滑块时跟踪滑块值的仪表。滑块的 ValueChangingFcn 回调从 event 参数中获取滑块的当前值。然后它使仪表指针指向该值。

如图所示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1400795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构之树和二叉树定义

数据结构之树和二叉树定义 1、树的定义2、树的基本概念3、二叉树的定义 数据结构是程序设计的重要基础&#xff0c;它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从问题出发&#xff0c;分析和研究计算机加工的数据的特性&#xff0c;以…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖微信小程序端(十三)

地址簿相关功能 1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计1.1.3 表设计 1.2 代码实现1.2.1 Mapper层1.2.2 Service层1.2.3 Controller层 1.1 需求分析和设计 1.1.1 产品原型 地址簿&#xff0c;指的是消费者用户的地址信息&#xff0c;用户登录成功后可以维护自己的地…

a-table 边框颜色修改

案例&#xff1a; <template><div class"mod_table"><a-table :columns"columns":data-source"data" bordered:pagination"false"></a-table></div> </template> <script> export default…

sshpass的安装与使用

一.简介 1.定义&#xff1a; ssh 登陆不能在命令行中指定密码&#xff0c;sshpass 的出现则解决了这一问题。它允许你用 -p 参数指定明文密码&#xff0c;然后直接登录远程服务器&#xff0c;它支持密码从命令行、文件、环境变量中读取。 2.使用 sshpass 原因 使用 sshpass…

代码随想录 Leetcode20. 有效的括号

题目&#xff1a; 代码(首刷自解 2024年1月21日&#xff09;&#xff1a; class Solution {bool check(char ch1,char ch2) {if(ch1 ) && ch2 ! () return true;else if(ch1 ] && ch2 ! [) return true;else if(ch1 } && ch2 ! {) return true;els…

C++——数组、多维数组、简单排序、模板类vector

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…

FaFu--练习复盘--2

3、函数练习 3.1、函数表达式&#xff08;1&#xff09; 描述 根据以下公式计算数学表达式的值&#xff0c;并将结果作为函数值返回。在main()函数中输入x&#xff0c;调用函数fun(x)&#xff0c;并输出fun(x)的值。 输入 输入1行&#xff0c;包含1个double类型的浮点数&…

数学建模实战Matlab绘图

二维曲线、散点图 绘图命令&#xff1a;plot(x,y,’line specifiers’,’PropertyName’,PropertyValue) 例子&#xff1a;绘图表示年收入与年份的关系 ‘--r*’:--设置线型&#xff1b;r:设置颜色为红色&#xff1b;*节点型号 ‘linewidth’&#xff1a;设置线宽&#xff1…

基于springboot+vue考编论坛

摘要 近年来&#xff0c;随着互联网的迅猛发展&#xff0c;编程论坛成为程序员们交流学术、分享经验的重要平台之一。为了满足广大程序员的需求&#xff0c;本文基于Spring Boot和Vue框架&#xff0c;设计并实现了一个功能强大的编程论坛。首先&#xff0c;我们选择Spring Boot…

RHEL - 更新升级软件或系统

《OpenShift / RHEL / DevSecOps 汇总目录》 文章目录 小版本软件更新yum update 和 yum upgrade 的区别升级软件和升级系统检查软件包是否可升级指定升级软件使用的发行版本方法1方法2方法3方法4 查看软件升级类型更新升级指定的 RHSA/RHBA/RHEA更新升级指定的 CVE更新升级指定…

当 OpenTelemetry 遇上阿里云 Prometheus

作者&#xff1a;逸陵 背景 在云原生可观测蓬勃发展的当下&#xff0c;想必大家对 OpenTelemetry & Prometheus 并不是太陌生。OpenTelemetry 是 CNCF&#xff08;Cloud Native Computing Foundation&#xff09;旗下的开源项目&#xff0c;它的目标是在云原生时代成为应…

Softmax函数介绍

Softmax函数是一种常用的激活函数&#xff0c;用于将一组实数值转换为概率分布。它常用于多类别分类问题中&#xff0c;将输入向量映射为各个类别的概率。 Softmax函数的公式如下&#xff1a; 其中&#xff0c;示输入向量的第 &#xfffd;i 个元素&#xff0c;&#xfffd;n …

【目标检测】YOLOv5算法实现(九):模型预测

本系列文章记录本人硕士阶段YOLO系列目标检测算法自学及其代码实现的过程。其中算法具体实现借鉴于ultralytics YOLO源码Github&#xff0c;删减了源码中部分内容&#xff0c;满足个人科研需求。   本系列文章主要以YOLOv5为例完成算法的实现&#xff0c;后续修改、增加相关模…

RHCE上课笔记(前半部分)

第一部分 网络服务 第一章 例行性工作 1.单一执行的例行性工作 单一执行的例行性工作&#xff08;就像某一个时间点 的闹钟&#xff09;&#xff1a;仅处理执行一次 1.1 at命令&#xff1a;定时任务信息 [rhellocalhost ~]$ rpm -qa |grep -w at at-spi2-core-2.40.3-1.el9.x…

SDCMS靶场通过

考察核心&#xff1a;MIME类型检测文件内容敏感语句检测 这个挺搞的&#xff0c;一开始一直以为检查文件后缀名的&#xff0c;每次上传都失败&#xff0c;上传的多了才发现某些后缀名改成php也可通过&#xff0c;png图片文件只把后缀名改成php也可以通过&#xff0c;之前不成功…

最全机器学习预测全家桶,持续更新!看这一篇绝对够了!MATLAB代码

全家桶一直在持续更新中&#xff0c;截止到本期&#xff0c;一共发了7篇关于机器学习预测全家桶的文章。且后续还会继续更新。参考文章如下&#xff1a; 1.五花八门的机器学习预测&#xff1f;一篇搞定不行吗&#xff1f; 2.机器学习预测全家桶&#xff0c;多步预测之BiGRU、Bi…

阿里云国外服务器多少钱一个月?24元/月

阿里云国外服务器优惠活动「全球云服务器精选特惠」&#xff0c;国外服务器租用价格24元一个月起&#xff0c;免备案适合搭建网站&#xff0c;部署独立站等业务场景&#xff0c;阿里云服务器网aliyunfuwuqi.com分享阿里云国外服务器优惠活动&#xff1a; 全球云服务器精选特惠…

代码随想录刷题题Day38

刷题的第三十八天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C Day38 任务 ● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组 1 最长递增子序列 300.最长递增子序列 …

运筹说 第107期 | 排队论创始人——阿格纳·克拉鲁普·爱尔朗

前面我们已经了解了非线性规划的相关内容&#xff0c;相信大家一定也有所收获&#xff0c;下面我们将带着大家继续了解排队论的相关内容&#xff0c;在本次文章中我们将一起走近排队论的奠基人——阿格纳克拉鲁普爱尔朗&#xff08;Agner Krarup Erlang&#xff09;&#xff0c…

x-cmd pkg | jieba - 中文结巴分词工具

目录 简介首次用户功能特点竞品分析进一步阅读 简介 结巴中文分词&#xff08;jieba&#xff09;是一款在 Python 环境下使用的开源中文文本分词工具。它支持多种分词模式&#xff0c;包括精确模式、全模式和搜索引擎模式&#xff0c;同时支持繁体分词和自定义词典。因其易用性…