主要内容

指导迁移策略

在R2019b MathWorks®发布了GUIDE,最初在MATLAB中构建应用程序的拖放环境®,将在未来的版本中删除。在GUIDE被删除后,现有的GUIDE应用程序(gui)将继续在MATLAB中运行,如果你需要改变一个应用程序的行为,应用程序文件仍然是可编辑的。

若要继续编辑布局为了帮助保持它与未来MATLAB版本的兼容性,您必须使用该表中列出的建议迁移策略之一。

应用开发需求 迁移策略 如何迁移
偶尔的编辑 将您的应用程序导出到一个单一的MATLAB文件,使用MATLAB函数管理您的应用程序布局和代码。 在GUIDE中打开应用程序并选择文件>出口到MATLAB-file.在指南删除选项对话框中,单击出口
持续的发展 将你的应用迁移到app Designer。 在GUIDE中打开应用程序并选择文件>迁移到应用设计师.在指南删除选项对话框中,单击迁移

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

导出一个GUIDE应用程序,通过在一个单独的MATLAB程序文件中重新创建GUIDE FIG和程序文件,将其转换为一个编程应用程序。

如果你打算:

  • 对你的应用的布局或行为做一些小的改变。

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

要导出应用程序,请在GUIDE中打开并选择文件>出口到MATLAB-file,或右键单击MATLAB中的FIG文件当前文件夹浏览器和选择出口到MATLAB-file.这将弹出“指南删除选项”对话框。确认正确的FIG文件被选择,然后点击出口.用MATLAB创建一个程序文件_export附加在文件名后面的。新文件包含你的原始回调代码和自动生成的函数,这些函数处理应用的创建和布局。

迁移指南应用程序到应用程序设计师

将你的GUIDE应用程序迁移到app Designer可以让你继续交互式地开发应用程序的布局。它还允许你利用功能,如增强的UI组件集和自动回流选项,使你的应用程序响应屏幕大小的变化。它让你能够创建和共享你的应用程序作为一个web应用程序(要求MATLAB编译器™).

指南的应用设计师迁移工具MATLAB在R2018a中首次发布,以简化转换过程。它可以通过MATLAB桌面中的附加资源管理器或通过文件交换MATLAB中央™

从R2020a开始,迁移工具有了显著的改进,大大减少了在app Designer中运行应用程序所需的时间和手动代码更新次数。有关这些增强的详细信息,请参见回调代码

对于需要大量或正在进行的特性开发的GUIDE应用程序,可以使用此选项。

有几种方法可以迁移你的应用程序,这取决于你开始使用的环境。

  • 打开指南删除选项对话框打开你的应用程序在指南和选择文件>迁移到应用设计师,或右击MATLAB中的FIG文件当前文件夹浏览器和选择迁移到应用设计师

    • 如果您还没有安装应用程序设计器迁移工具指南,请单击安装支持包万博1manbetx.这将打开Add-On Explorer,您可以在其中安装迁移工具。一旦你安装了工具,重新打开指南删除选项对话框。

    • 一旦你安装了指南到应用设计师迁移工具,选择正确的FIG文件,然后点击迁移.应用程序迁移并在应用程序设计器中自动打开。

  • 从应用程序设计器,打开任何应用程序,并转到设计师选项卡。在文件部分中,点击开放>打开应用设计师迁移工具指南

迁移工具的特点

该迁移工具通过阅读GUIDE FIG文件,并在MLAPP文件中自动生成App Designer等效组件和布局,帮助您转换应用程序。GUIDE回调代码和其他用户定义函数被复制到MLAPP文件中。这种半自动化的代码转换还会创建一个迁移报告,该报告为需要的任何手动代码更新提供操作建议。该工具的一些特性在本表中描述。

迁移工具的特性 描述
文件转换 读入GUIDE FIG文件和相关代码,然后生成App Designer MLAPP文件。App Designer文件名采用这种形式guideFileName_App.mlapp
组件和应用布局

将组件和属性配置转换为App Designer等效的,并保留App的布局。

回调代码 在MLAPP文件中保留一个GUIDE回调代码和用户定义函数的副本。
教程 逐步完成对迁移后的应用程序所做的更改。
移民报告 总结迁移工具成功完成的操作。列出任何限制或不支持的功能,特定于你的应用,如果有建万博1manbetx议的操作。

回调代码

为了使guide风格的回调代码与应用程序中的App Designer UI组件兼容,迁移工具使用了一个名为convertToGUIDECallbackArguments.这个函数将App Designer回调参数转换为你的代码需要的guidestyle回调参数。的convertToGUIDECallbackArguments函数被添加到每个迁移回调函数的开始。它接受App Designer回调参数应用程序事件并返回guidestyle回调参数hObjecteventdata,处理.例如:

hObject是其回调正在执行的对象的句柄。对于你的GUIDE应用中的组件UIControlButtonGroup对象,hObject是a的柄吗UIControlPropertiesConverterButtonGroupPropertiesConverter对象。创建这些对象是为了让guide风格的代码在App Designer回调函数中工作。

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

处理是包含UI图的迁移子组件的结构,该子组件具有“标签”属性值集。子组件UIControl你的GUIDE应用中的对象是UIControlPropertiesConverter对象。类似地,childButtonGroup对象是ButtonGroupPropertiesConverter对象在迁移的应用程序。

UIControlPropertiesConverterButtonGroupPropertiesConverter对象就像guide样式代码和App Designer组件和回调之间的适配器。一个UIControlPropertiesConverter对象是为你的GUIDE应用中的每个组件创建的UIControl对象。这些转换器对象与迁移后的应用程序中的App Designer UI组件相关联。转换器对象具有与原始应用程序相同的属性和值UIControl从你的GUIDE应用程序,但它将它们应用到其关联的app Designer UI组件。

同样的,对ButtonGroupobject from GUIDE, aButtonGroupPropertiesConverter对象是在App Designer中创建的。对象使设置SelectedObject属性到一个UIControlPropertiesConverter对象,使按钮组SelectionChangedFcn回调逻辑将起作用。

特殊注意事项

在某些情况下,你需要在迁移应用之前或之后采取额外的步骤。下面的表格列出了一些常见的场景和编码模式,它们需要额外的步骤或手动代码更新。这并不是一个全面的清单。

指南的应用特性 描述 建议的行动
多窗口应用程序(即两个或多个共享数据的应用程序) 多窗口应用程序要求每个应用程序分别迁移。迁移后的应用程序文件名被附加_App.必须更新来自其他应用程序对这些应用程序的调用。 分别迁移每个应用程序。在调用应用程序中,将被调用的应用程序的名称更新为新的文件名。
单选按钮和单选按钮回调

迁移工具不会迁移非父单选按钮组的单选按钮,也不会迁移单个单选按钮的回调函数。

在App Designer中创建一个按钮组,并向其添加单选按钮。若要在单选按钮选择更改时执行行为,请创建SelectionChangedFcn按钮组的回调函数。有关更多信息,请参见uiradiobuttonButtonGroup属性
gco电影uistack,clf“重置”论点 不支持在App Designer中调用这些函数。万博1manbetx 在迁移之前,确定这个功能对你的应用程序是否重要。在App Designer中没有任何变通方法。
findobjfindall,gcbo

使用findobjfindall,或gcbo引用组件和设置属性可能会出错。UIControl对象被迁移到等效的App Designer UI组件。要访问和设置这些迁移组件上的属性,您必须在UIControlPropertiesConverter对象。或者,您可以更新代码以使用其关联的App Designer组件、属性和值。

使用处理结构,或者更新代码以使用关联的App Designer组件、属性和值。
输入参数个数nargchk 助手函数被迁移到应用程序方法中应用程序作为额外的输入参数。这会导致不正确的输入参数个数nargchk逻辑。 递增检查值1
OutputFcn (varargout)数字输出

App Designer中没有类似的功能。

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

如果你的OutputFcn函数包含对应用程序至关重要的初始化代码,然后将其添加到OpeningFcn代替。

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

函数out = MyGUIDEApp(varargin) app = MyMigratedApp(varargin{:});= app.UIFigure;结束

如果您的GUIDE应用程序集成了第三方组件使用功能,如actxcontrol,请参阅使用Java和ActiveX的MATLAB应用程序推荐

帮助添加新功能或完全采用应用设计师代码风格

App Designer和GUIDE有不同的代码结构、回调语法和访问UI组件和共享数据的技术。如果你打算在移植后的应用中添加新的App Designer特性,或者想要更新它以使用App Designer代码风格和约定,那么了解这些差异是很有用的。下面的表格总结了其中的一些差异。

区别 指南 程序设计师 更多的信息
使用图形和图形

指南称数字函数创建应用程序窗口。

指南称函数创建用于显示图形的轴。

支持所有MATLAB图形函数。万博1manbetx不需要指定目标轴。

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

App Designer调用uiaxes函数创建用于显示图形的轴。

支持大多数MATLAB图形函数。万博1manbetx

在App设计器中显示图形
使用组件

属性创建大多数组件uicontrol函数。可用的组件较少。

App Designer使用自己的专用功能创建每个UI组件。有更多的组件可用,包括TabGroup,DatePicker

构建的应用程序组件
访问组件属性

指导使用得到访问组件属性,并使用处理指定组件。

例如,
name =得到(handles.Fig '名称')

应用程序设计支持万博1manbetx得到,但鼓励使用点符号来访问组件属性,并使用应用程序指定组件。

例如,
name = app.UIFigure.Name

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

代码被定义为可以调用局部函数的主函数。所有代码都是可编辑的。

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

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

所需的回调输入参数是处理hObject,eventdata

例如,
myCallback (hObject evendata处理)

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

例如,
myCallback(应用程序、事件)

在App Designer中编写回调
共享数据

若要在回调和函数之间存储和共享数据,请使用用户数据财产,处理结构,或guidatasetappdata,或getappdata函数。

例如,
句柄。currSelection =选择;
guidata (hObject处理);

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

例如,
app.currSelection =选择

在应用设计者应用中分享数据

相关的话题