本系列文章主要介绍使用MATLAB APP Desinge进行app或者说GUI界面开发的方法介绍,包括(上)和(下) 两篇文章,上篇中主要介绍常用的GUI组件的使用方法,下篇是对上篇的补充,主要介绍开发技巧常用示例补充整理以及app文件的发布和部署方法,为方便理解,本文示例均带有动态演示
三、开发技巧及常用示例补充整理
1、Resize和AutoResizeChildren:如果勾选上Resize,则在程序运行后允许我们改变界面的大小,如果勾选上AutoResizeChildren,则在我们改变页面大小时,组件会自动调整大小来适用界面大小的改变,如下图所示:
2、排版技巧之组合和对齐,选中多个组件后可以右键,对其进行批量对齐,若想同步调整位置,可对其进行组合,如下图所示
3、为组价添加图标,可通过icon属性为选中的组件添加图标,注意选择的图片文件需要位于matlab路径下
4、为组价添加提示,当我们需要为组件添加提示,即当gui运行后,当鼠标放到组件上时会显示的提示信息,可通过在交互性中的Tooltip选项来编写。
5、借用msgbox弹出对话框信息,我们可以配合按钮或者其他组件,使用msgbox弹出对话框信息,该函数的第一个参数为弹出的对话框提示信息,第二个参数为对话框的名字,第三个参数为选择的图标,当选为custom时,为使用自定义图标,此时需要为其指定自定义图标的数据,用法如下所示:
[IconData,IconCMap]=imread("tb.png");
msgbox("目前版本是V2.01","版本","custom",IconData,IconCMap)
用法示例:
% Button pushed function: Button_3
function Button_3Pushed(app, event)
msgbox("这是一个GUI界面开发练习Demo","关于","help")
pause(2)
[IconData,IconCMap]=imread("tb.png");
msgbox("目前版本是V2.01","版本","custom",IconData,IconCMap)
pause(2)
msgbox("当前版本可更新","更新ing","warn")
pause(2)
msgbox("更新失败.....","错误","error")
end
效果如下:
6、借用questdlg在弹出对话框内实现交互,questdlg的第一个参数是弹出对话框的内容,第二个参数是弹出对话框的名字,第三个到倒数第二个参数是可交互的选项,最有一个参数是设定的默认选项,可配合switch语句实现交互触发,示例如下:
% Button pushed function: Button_4
function Button_4Pushed(app, event)
chose=questdlg("是否确认要退出程序","警告","退出","取消","我点错了","退出");
switch chose
case "退出"
[IconData,IconCMap]=imread("tb.png");
msgbox("期待下一次与您相见","再见","custom",IconData,IconCMap)
pause(2)
delete(app.UIFigure)
return;
case "取消"
return;
case "我点错了"
return;
end
end
7、可以借用uigetfile打开文件选择对话框,以浏览图片的形式,将选择的图片显示在坐标区,uigetfile常见用法如下:
(1)当用户点击打开时,[file,path] = uigetfile 将返回文件的名称和路径。如果用户点击取消或窗口关闭按钮 (X),uigetfile 将为两个输出参数都返回 0。
(2)___ = uigetfile(filter,title) 指定对话框标题和打开文件类型。要使用默认文件筛选器进行筛选,但指定自定义标题,请使用空引号作为筛选器值。例如 file = uigetfile(‘’,‘Select a File’)
在下面的例子中,我们使用uigetfile 来浏览打开文件,并限制浏览的文件格式仅为jpg、bmp、png,打开成功后再借助strcat函数,将浏览选择的文件的名file和路径path拼成一个字符串,得到该文件的绝对路径然后使用imshow函数进行显示
程序示例:
% Button pushed function: Button_5
function Button_5Pushed(app, event)
[file,path] = uigetfile({'*.jpg';'*.bmp';'*.png';'*.*'});
if isequal(file,0) || isequal(path,0) %没有选择图片
errordlg("没有选中文件","错误")
else
filepath=strcat(path,file);
imshow(filepath,'Parent',app.UIAxes2)
end
end
效果演示:
8、app的回调函数,除了为各个组件添加回调函数之外,app项目的整体或者子项目也是可以添加回调的,比如我想让app在运行的初始执行一些操作,就可以在StartupFcn回调函数中进行编写
9、当我们的开发过程中频繁的用到某些程序段的时候,可以将其封装成函数使用,在Appdesigner中同样可以添加自定义函数,如下所示:
四、app文件的发布和部署方法
1、首先选择App详细信息,然后按照需要填写相关信息,点击确定
2、app发布和共享,点击共享,常用创建MATLAB App和独立桌面 app两种
(1)MATLAB App方法可以将创建的app打包后,可直接在matlab中安装,使用起来较方便
打包完成后,matlab的在APP选项卡中,选择安装App,选择之前打包好的app安装就可以了
(2)独立桌面 app方法见如下链接
MATLAB上APP Designer如何导出exe(点击可跳转)
若报以下错误,则大概率是因为之前编辑的app名称的问题,不能用汉字,改成英文即可解决