文章目录
- AppDesigner
- 各个版本的特点
- mlapp文件基本格式
- AppDesigner的回调函数
- 常见控件的属性
- MVC模式
- MVC模式设计GUI
- MVC简单使用
- 其他
- 让app designer置顶
- 将Guide的GUI导出为m文件
- 将app编译为exe
- 将app中的多个控件组合在一起
AppDesigner
20200328
各个版本的特点
- 在2017b版本中,引入了menu控件
- 在2018a版本中,加入了mlapp向前兼容功能,可以将mlapp另存为2016、2017等版本
- 2019b版本的Axies支持3D画图功能
mlapp文件基本格式
将mlapp文件作为zip文件打开,可以看到文件结构如下
文件 | 描述 |
---|---|
_rels/.rels | 似乎和APP无关 |
[Content_Types].xml | 似乎和APP无关 |
metadata/coreProperties.xml | 包含APP的创建、更新时间信息 |
metadata/mwcoreProperties.xml | 包含APP对应的Matlab版本信息 |
metadata/mwcorePropertiesExtension.xml | 包含Matlab的信息 |
appdesigner/appModel.mat | 包含APP的部分代码信息 |
matlab/document.xml | 包含了APP的全部代码信息 |
对于2017版本,appData.CodeData.EditableSection.Code包含的是APP中可编辑的代码内容
对于2019版本,APP的信息包含在code、components变量中
AppDesigner的回调函数
常见控件的属性
Button对象的主要属性
UITable对象的主要属性
MVC模式
MVC模式设计GUI
模型(Model):负责程序的内在逻辑;
视图(View):负责构造,展⽰⽤户界⾯,可直接使用app designer设计;
控制器(Controller):负责处理⽤户输⼊
参照《MATLAB面向对象编程》一书提供的范例,使用app designer模拟设计,也是折腾了一阵子,才使得MATLAB的命令窗口中没有出现warnings。大致有以下几点要注意,
- 如果直接在app designer的按钮中设置回调函数,则生成的回调函数模板为xxxx(app, event),不是xxxx(app,src,event)的格式,导致运行过程中会出现警告
- 如果回调函数在Controller类中,注册侦听函数时,直接使用形如@app.controlObj.callback_Button_WithDrawPushed的方式是行不通的,没有真正将该函数设置为回调函数
- 可以为APP设置输入参数
MVC简单使用
部分代码如下图
使用虚拟串口软件,将app与串口调试助手相连接,测试情况如下图,
需要注意的是其中,uitable空间可以更改每行的背景色,但是无法单独设置每行的字体颜色(2019b版本不支持html设置字体的方法)。由此想到,虽然使用appdesigner设计GUI时,可以利用matlab提供的丰富的函数,但它提供的控件在易用上还是不如VS提供的。
其他
让app designer置顶
在github上找到uifigureOnTop函数,可以实现该功能