创作时间:2021-04-19
Readme:
续接前面两篇文章,本文讲述一种最常用的多app界面的数据传递方法,即就是: 借助公有函数进行参数传递.
本文目录:
1.demo演示
2.如何实现?
2.1 功能模块分解
2.2 详细步骤
正文:
1.举例说明
App 之间共享数据的方式取决于你的设计形式。
这里,我介绍一种最常见的设计形式,即就是: 包含两个 App:一个主main App 和一个对话框dialog box。.
如下图:
demo演示如下:.
该demo包括两个界面,主界面和对话框界面。
主界面用于绘图,对话框界面用于输入参数。
1)主界面
a)文件名:MainAppExample.mlapp
b) uifigure名:Dsiplay Plot
2)子界面的文件名:
a)文件名:DialogAppExample.mlapp
b) uifigure名:Options
demo功能说明:.
1.运行主界面;
2.点击主界面的Button控件 (名为Options),弹出对话框界面,与此同时,关闭Button 控件的使能;
3.在子界面中editfield 控件(名为sample size 和color)中输入参数sample size和color;
4.点击子界面Button控件 (名为ok),参数传递到主界面,并进行主界面绘图区的图形更新,此时再次打开Button 控件的使能;
2.如何实现?
1.首先是在主界面中调用子界面
这里是重点,尤其是注释的这几句.
%主界面代码区
% Button pushed function: OptionsButton回调
function OptionsButtonPushed(app, event)
% 关闭OptionsButton控件的使能
app.OptionsButton.Enable = 'off';
%打开子界面并给参数赋值
app.DialogApp = DialogAppExample(app, app.CurrentSize, app.CurrentColormap);
%%这句代码如果看不懂,请参考13,14课内容。
% 相当于调用了子界面的StartupFcn(app, mainapp, sz, c)
end
2.子界面中输入参数
%子界面代码区
% Button pushed function: OkButton
function ButtonPushed(app, event)
% 调用主界面的公有函数
updateplot(app.CallingApp, app.EditField.Value, app.DropDown.Value);
% 关闭子界面app
delete(app)
end
3.主界面的公有函数
%主界面代码区
methods (Access = public)%公有函数
function updateplot(app, sz, c)
%将输入保存到属性中
app.CurrentSize = sz;
app.CurrentColormap = c;
% 更新绘图
Z = peaks(sz);
surf(app.UIAxes,Z);
colormap(app.UIAxes,c);
% 重新恢复OptionsButton使能
app.OptionsButton.Enable = 'on';
end
end
4.主界面的属性和startup
properties (Access = private)
DialogApp % Dialog box app
CurrentSize = 35; % Surface sample size%给定了初值
CurrentColormap = 'Parula'; % Colormap%给定了初值
end
function startupFcn(app)
% Call updateplot to display an initial plot
updateplot(app, app.CurrentSize, app.CurrentColormap)
end
5.子界面的属性和startup
properties (Access = private)
CallingApp % Main app object
end
function StartupFcn(app, mainapp, sz, c)
%子界面初始化,赋值3个,CallingApp和两个参数
app.CallingApp = mainapp;
% Update UI with input values
app.EditField.Value = sz;
app.DropDown.Value = c;
end
6.子界面的Close request function
Close request function: UIFigure
function DialogAppCloseRequest(app, event)
% Enable the Plot Opions button in main app
app.CallingApp.OptionsButton.Enable = 'on';
% Delete the dialog box
delete(app)
具体,可以观看本节 视频(正在录制中,敬请期待~·).
THE END~
不积小流无以成江海,不积跬步无以至千里。
【MATLAB-app】系列教程(含视频)00_csdn上第一套关于matlab appdesigner系列“视频课”来啦~~
【图像算法&MATLAB】一文讲明白:图像的直方图均衡化(附作者自编源代码)
【探测器与相机标准】我对图像(图像传感器/相机)“非均匀性”的理解与学习笔记