在R2019b MathWorks®发布了GUIDE,最初在MATLAB中构建应用程序的拖放环境®,将在未来的版本中删除。在GUIDE被删除后,现有的GUIDE应用程序(gui)将继续在MATLAB中运行,如果你需要改变一个应用程序的行为,应用程序文件仍然是可编辑的。
若要继续编辑布局为了帮助保持它与未来MATLAB版本的兼容性,您必须使用该表中列出的建议迁移策略之一。
应用开发需求 | 迁移策略 | 如何迁移 |
---|---|---|
偶尔的编辑 | 将您的应用程序导出到一个单一的MATLAB文件,使用MATLAB函数管理您的应用程序布局和代码。 | 在GUIDE中打开应用程序并选择文件>出口到MATLAB-file.在指南删除选项对话框中,单击出口. |
持续的发展 | 将你的应用迁移到app Designer。 | 在GUIDE中打开应用程序并选择文件>迁移到应用设计师.在指南删除选项对话框中,单击迁移. |
导出一个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回调参数hObject
,eventdata
,处理
.例如:
hObject
是其回调正在执行的对象的句柄。对于你的GUIDE应用中的组件UIControl
或ButtonGroup
对象,hObject
是a的柄吗UIControlPropertiesConverter
或ButtonGroupPropertiesConverter
对象。创建这些对象是为了让guide风格的代码在App Designer回调函数中工作。
eventdata
通常为空,但可以是包含有关回调事件的特定信息的结构体。
处理
是包含UI图的迁移子组件的结构,该子组件具有“标签”
属性值集。子组件UIControl
你的GUIDE应用中的对象是UIControlPropertiesConverter
对象。类似地,childButtonGroup
对象是ButtonGroupPropertiesConverter
对象在迁移的应用程序。
的UIControlPropertiesConverter
和ButtonGroupPropertiesConverter
对象就像guide样式代码和App Designer组件和回调之间的适配器。一个UIControlPropertiesConverter
对象是为你的GUIDE应用中的每个组件创建的UIControl
对象。这些转换器对象与迁移后的应用程序中的App Designer UI组件相关联。转换器对象具有与原始应用程序相同的属性和值UIControl
从你的GUIDE应用程序,但它将它们应用到其关联的app Designer UI组件。
同样的,对ButtonGroup
object from GUIDE, aButtonGroupPropertiesConverter
对象是在App Designer中创建的。对象使设置SelectedObject
属性到一个UIControlPropertiesConverter
对象,使按钮组SelectionChangedFcn
回调逻辑将起作用。
在某些情况下,你需要在迁移应用之前或之后采取额外的步骤。下面的表格列出了一些常见的场景和编码模式,它们需要额外的步骤或手动代码更新。这并不是一个全面的清单。
指南的应用特性 | 描述 | 建议的行动 |
---|---|---|
多窗口应用程序(即两个或多个共享数据的应用程序) | 多窗口应用程序要求每个应用程序分别迁移。迁移后的应用程序文件名被附加_App .必须更新来自其他应用程序对这些应用程序的调用。 |
分别迁移每个应用程序。在调用应用程序中,将被调用的应用程序的名称更新为新的文件名。 |
单选按钮和单选按钮回调 | 迁移工具不会迁移非父单选按钮组的单选按钮,也不会迁移单个单选按钮的回调函数。 |
在App Designer中创建一个按钮组,并向其添加单选按钮。若要在单选按钮选择更改时执行行为,请创建SelectionChangedFcn 按钮组的回调函数。有关更多信息,请参见uiradiobutton 和ButtonGroup属性. |
gco ,电影 ,uistack ,clf 与“重置” 论点 |
不支持在App Designer中调用这些函数。万博1manbetx | 在迁移之前,确定这个功能对你的应用程序是否重要。在App Designer中没有任何变通方法。 |
findobj ,findall ,gcbo |
使用 |
使用处理 结构,或者更新代码以使用关联的App Designer组件、属性和值。 |
输入参数个数 和nargchk |
助手函数被迁移到应用程序方法中应用程序 作为额外的输入参数。这会导致不正确的输入参数个数 或nargchk 逻辑。 |
递增检查值1 . |
OutputFcn (varargout) 和数字 输出 |
App Designer中没有类似的功能。 当您实例化一个迁移的App Designer应用程序时,输出总是应用程序对象,而不是 |
如果你的 如果你的 函数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调用 App Designer调用 支持大多数MATLAB图形函数。万博1manbetx |
在App设计器中显示图形 |
使用组件 | 属性创建大多数组件 |
App Designer使用自己的专用功能创建每个UI组件。有更多的组件可用,包括 |
构建的应用程序组件 |
访问组件属性 | 指导使用 例如, |
应用程序设计支持万博1manbetx 例如, |
在App Designer中编写回调 |
管理应用程序代码 | 代码被定义为可以调用局部函数的主函数。所有代码都是可编辑的。 |
代码定义为一个MATLAB类。只有回调函数、辅助函数和自定义属性是可编辑的。 |
在App Designer代码视图中管理代码 |
编写回调 | 所需的回调输入参数是 例如, |
所需的回调输入参数是 例如, |
在App Designer中编写回调 |
共享数据 | 若要在回调和函数之间存储和共享数据,请使用 例如, |
要在回调和函数之间存储和共享数据,请使用自定义属性来创建变量。 |
在应用设计者应用中分享数据 |