主要内容

指导迁移策略

在R2019B,MathWorks®宣布指南,用于在Matlab中构建应用程序的原始拖放环境®,将在将来的释放中删除。删除指南后,现有指南应用程序(GUI)将继续在MATLAB中运行,如果您需要更改应用程序的行为,应用程序文件仍将可编辑。

继续编辑布局现有指南应用程序并帮助您与未来MATLAB版本的兼容性,您必须使用此表中列出的建议迁移策略之一。

应用程序开发需求 迁移策略 如何迁移
偶尔编辑 将应用程序导出到单个MATLAB文件以管理您的应用程序布局和使用MATLAB函数的代码。 在指南中打开应用程序并选择文件>导出到MATLAB文件。在“指南删除选项”对话框中,单击出口
正在进行的发展 将您的应用程序迁移到App Designer。 在指南中打开应用程序并选择文件>迁移到App Designer。在“指南删除选项”对话框中,单击迁移

导出指南应用程序到MATLAB文件

导出指南应用程序通过在单个MATLAB程序文件中一起重新创建指南下图和程序文件将其转换为程序化应用程序。

如果您打算使用此选项:

  • 对应用程序的布局或行为进行微小的更改。

  • 以编程方式开发您的应用程序,不交互方式。

要导出应用程序,请在指南中打开它并选择文件>导出到MATLAB文件,或右键单击MATLAB中的无与伦比的文件当前文件夹浏览器并选择导出到MATLAB文件。这会带来指南删除选项对话框。验证是否选择了正确的无花果文件,然后单击出口。MATLAB创建一个程序文件_出口附加到文件名。新文件包含您的原始回调码以及处理应用程序创建和布局的自动生成函数。此处示出了这些添加函数的示例。

将指南应用程序迁移到App Designer

将您的指南应用程序迁移到App Designer允许您以交互方式继续开发应用程序的布局。它还允许您利用增强型UI组件集和自动回流选项的功能,以使您的应用程序响应屏幕尺寸的更改。它为您提供了作为Web应用程序创建和共享您的应用程序的能力(需要Matlab Compiler™)。

App Designer迁移工具指南马铃薯首次在R2018A中发布,以简化转换过程。它可通过MATLAB桌面的附加资源管理器或通过文件兑换Matlab Central™

从R2020A开始,迁移工具具有显着的改进,可以大大减少时间,以及在App Designer中获取应用程序所需的手动代码更新的数量。有关这些增强功能的详细信息,请参阅回调码

使用此选项适用于需要重要或正在进行的功能开发的指南应用程序。

有几种方法可以迁移您的应用,具体取决于您从中签出的环境。

  • 在指南和选择中打开应用程序打开“指南删除选项”对话框文件>迁移到App Designer,或右键单击MATLAB中的无花果文件当前文件夹浏览器和选择迁移到App Designer

    • 如果您尚未安装“应用程序设计器迁移”工具指南,请单击安装支持包金宝app。这将打开附加资源管理器,您可以在其中安装迁移工具。安装工具后,重新打开指南删除选项对话框。

    • 安装了App Designer迁移工具指南后,选择正确的无花果文件,然后单击迁移。该应用程序迁移并自动在App Designer中打开。

  • 从App Designer,打开任何应用程序并转到设计师标签。在里面文件部分,点击打开>“应用程序设计器迁移”工具的打开指南

迁移工具的功能

迁移工具可帮助您通过读取指南图文件文件并自动生成应用程序设计器等效组件和布局在MLAPP文件中进行转换应用程序。您的指南回调码和其他用户定义的函数将复制到MLAPP文件中。此半自动化代码转换还会创建迁移报告,该报告表明了所需的任何手动代码更新的操作。该工具的某些功能在该表中描述。

迁移工具功能 描述
文件转换 读取指导图数据文件和关联代码,然后生成App Designer MLAPP文件。App Designer文件名采用表单指南文件名_app.mlapp.
组件和应用程序布局

将组件和属性配置转换为App Designer等价物,并保留应用程序的布局。

回调码 保留MLAPP文件中的指南回调代码和用户定义函数的副本。
教程 步骤通过对迁移的应用程序所做的更改。
迁移报告 总结迁移工具成功完成的操作。列出任何限制或不受支持的功能,特定于您的应用程序,如金宝app果可用则建议操作。

回调码

为了使您的导向式回调码与应用程序中的App Designer UI组件兼容,迁移工具使用一个名为conventtoguidecallbackArguments.。此函数将App Designer回调参数转换为代码所需的指南样式回调参数。这conventtoguidecallbackArguments.函数被添加到每个迁移的回调函数的开头。它需要App Designer回调参数应用程序事件并返回指南式回调参数新奇EventData., 和把手。例如:

新奇是呼叫正在执行的对象的句柄。对于来自您的指南应用程序的组件UICONTROL.或者buttongroup.对象,新奇是一个句柄UICONTROLPROPERTIESCONTER或者buttongrouppropertiesconverter.目的。创建这些对象以使您的导向式代码在您的应用程序设计器回调函数中工作。

EventData.通常是空的,但可以是包含有关回调事件的特定信息的结构。

把手是一个结构,包含具有ui图形的迁移的子组件'标签'属性值集。儿童组成部分UICONTROL.您的指南应用程序中的对象是UICONTROLPROPERTIESCONTER迁移应用程序中的对象。同样,孩子buttongroup.对象是buttongrouppropertiesconverter.迁移应用程序中的对象。

UICONTROLPROPERTIESCONTERbuttongrouppropertiesconverter.对象像指南式代码和应用程​​序设计器组件和回调之间的适配器一样。一种UICONTROLPROPERTIESCONTER对象是针对您的指南应用程序中的每个组件创建的UICONTROL.目的。这些转换器对象与迁移的应用程序中的App Designer UI组件相关联。转换器对象与原始的属性和值相同UICONTROL.从您的指南应用程序中,它将它们应用于其关联的App Designer UI组件。

同样,对于buttongroup.来自指南的对象,abuttongrouppropertiesconverter.对象是在App Designer中创建的。该对象可以设置selectedObject.财产至A.UICONTROLPROPERTIESCONTER对象如此按钮组SelectionChangedFCN.回调逻辑将函数。

特殊考虑因素

有一些情况要求您在迁移您的应用之前或之后占用额外的步骤。此表列出了需要额外步骤或手动代码更新的常见方案和编码模式。这并不意味着全面列表。

指南应用程序功能 描述 建议的行动
MultiWindow应用程序(即共享数据的两个或多个应用程序) MultiWindow应用程序需要单独迁移每个应用程序。迁移的应用文件名已附加_应用程序。必须更新从其他应用程序调用这些应用程序。 单独迁移每个应用程序。在Calling应用程序中,更新将调用到新文件名的应用程序的名称。
单选按钮和单选按钮回调

迁移工具不会迁移不为单选按钮组的单选按钮,或者为单个单选按钮的回调函数。

在App Designer中创建一个按钮组,并将单选按钮添加到它。要在更改单选按钮选择时执行行为,请创建一个SelectionChangedFCN.按钮组的回调函数。有关更多信息,请参阅UIRADIOBUTTON.buttongroup属性
GCO电影uistack., 和CLF.与之'重启'争论 不支持在App Designer中调用这些函数。金宝app 确定此功能是否在迁移之前对您的应用程序至关重要。App Designer中没有解决方法。
findobj.找到所有, 和gcbo.

使用findobj.找到所有, 或者gcbo.引用组件并设置属性可能会错误。UICONTROL.对象将迁移到等效的App Designer UI组件。访问和设置这些迁移的组件上的属性,必须将其设置为UICONTROLPROPERTIESCONTER对象。或者,您可以更新代码以使用其关联的应用程序设计器组件,属性和值。

使用参考组件把手改为结构,或更新代码以使用关联的应用程序设计器组件,属性和值。
纳尔加克 辅助功能迁移到应用方法并具有应用程序作为额外的输入参数。这可能会导致不正确或者纳尔加克逻辑。 递增检查值1
Outputfcn(varargout)数字输出

App Designer中没有等效功能。

当您实例化迁移的App Designer应用程序时,输出始终是App对象,而不是数字目的。

如果你的outputfcn.函数包括对您的应用至关重要的初始化代码,然后将其添加到结尾开幕式氟氯烃反而。

如果你的outputfcn.函数指定当您实例化应用程序时要分配给工作区的输出,例如数字对象,然后您需要创建实例化应用程序的函数。例如:

功能out = myguideapp(varargin)app = mymigrateApp(varargin {:});Out = app.uifigure;结尾

如果您的指南应用程序使用像的功能集成了第三方组件ActXControl., 看使用Java和ActiveX的Matlab应用程序的建议

添加新功能或完全采用App Designer代码风格的帮助

App Designer和Guide具有不同的代码结构,回调语法和用于访问UI组件和共享数据的技术。了解这些差异如果您计划向迁移的应用程序添加新的App Designer功能,或者想要更新以使用App Designer代码样式和约定。该表总结了其中一些差异。

区别 指导 App Designer. 更多信息
使用数字和图形

指南打电话给数字函数创建应用程序窗口。

指南打电话给功能要为显示图创建轴。

支持所有MATLAB图形功能。金宝app无需指定目标轴。

App Designer调用Uifigure.函数创建应用程序窗口。

App Designer调用Uiacxes.功能要为显示图创建轴。

支持大多数MATLAB图形功能。金宝app

在App Designer中显示图形
使用组件

指南创建大多数组件UICONTROL.功能。可以使用更少的组件。

App Designer使用自己的专用功能创建每个UI组件。提供更多组件,包括测量Tabgroup., 和日期选择器

App构建组件
访问组件属性

指导用途得到访问组件属性并使用把手指定组件。

例如,
name = get(handles.fig,'name')

App Designer支金宝app持得到,但鼓励使用点符号来访问组件属性,并使用应用程序指定组件。

例如,
name = app.uifigure.name.

在App Designer中写回调
管理应用程序代码

该代码被定义为可以调用本地函数的主要函数。所有代码都是可编辑的。

代码被定义为MATLAB类。只有回调,辅助函数和自定义属性是可编辑的。

管理App Designer代码视图中的代码
写回调

需要回调输入参数是把手新奇, 和EventData.

例如,
Mycallback(讽目:evendata,句柄)

需要回调输入参数是应用程序事件

例如,
mycallback(应用程序,事件)

在App Designer中写回调
分享数据

要在回调和函数之间存储和共享数据,请使用用户数据财产,呢把手结构,或者指导setappdata., 或者getAppData.功能。

例如,
Handles.Currelection =选择;
Guidata(令人厌流,处理);

要在回调和函数之间存储和共享数据,请使用自定义属性来创建变量。

例如,
App.Currelection =选择

在App Designer应用程序中共享数据

相关话题