MATLAB app designer 菜鸟进阶学习(三)
3.创建确认对话框
在app设计中,确认对话框是不可缺少的存在,如关闭app前的提醒、修改参数之后的提醒,可以规避在操作过程中的失误,从而避免数据等的丢失
3.1 创建对话框语法
uiconfirm(f,message,title) uiconfirm(f,message,title,Name,Value) selection = uiconfirm(___)
其中,uiconfirm(
在目标图窗 f
,message
,title
)f
中显示一个 App 内模态确认对话框。此语法显示供用户选择的两个选项
uiconfirm(
显示确认对话框,其中有一个或多个可自定义对话框外观和行为的 f
,message
,title
,Name,Value
)Name,Value
对组参数。例如,您可以在对话框中指定一组自定义选项,而不是默认的
以字符向量形式返回用户的选择。可以结合上述任一语法使用 selection
= uiconfirm(___)selection
输出参数。如果使用此语法,显示对话框时 MATLAB 命令提示将不可访问。
message:要显示的消息,指定为字符向量、字符向量元胞数组或字符串数组。当消息有多行文本时,指定元胞数组或字符串数组。数组中的每个元素对应于一行文本。
title:对话框标题,指定为字符向量或字符串标量。
指定可选的、以逗号分隔的 Name,Value
对组参数。Name
为参数名称,Value
为对应的值。Name
必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN
所示。
3.2 详述
根据不同的应用场景,对话框的个性化设计分别为下述几种
3.2.1 指定不同的图标
selection = uiconfirm(app.UIFigure,'Close document?','Confirm Close',... 'Icon','warning');
当你点击ok后,uiconfirm
将以字符向量形式返回该选项,即返回“ok”。
其中,系统预定义图标的类型包括:
同时可以自定义图标,可将自定义图标指定为下列值之一:
-
字符向量,指定 MATLAB 路径中的 SVG、JPEG、GIF 或 PNG 图像的文件名。也可以指定图像文件的完整路径。
- 真彩色图像数组
3.2.2 指定自定义选项
例:创建一个确认对话框,其中包含三个选项:
msg = 'Saving these changes will overwrite previous changes.'; title = 'Confirm Save'; selection = uiconfirm(f,msg,title,... 'Options',{'Overwrite','Save as new','Cancel'},... 'DefaultOption',2,'CancelOption',3);
Options: 自定义选项,指定为字符向量元胞数组或字符串数组。
DefaultOption:
默认选项,指定为字符向量、字符串标量或整数。默认选项对应于对话框中默认情况下获得焦点的按钮。
指定字符向量或字符串标量时,它必须与 Options
数组中的某个元素匹配。但是,如果调用没有 Options
参数的 uiconfirm
,则 DefaultOption
必须是 'OK'
或 'Cancel'
。
如果指定整数,则它必须在 [1, n] 范围内,其中 n 是 Options
数组的长度。如果调用没有 Options
参数的 uiconfirm
,则 DefaultOption
必须是 1
或 2
。
'CancelOption'
:取消选项,指定为字符向量、字符串标量或整数。取消选项指定与对话框中的取消操作对应的选项。
当指定字符向量或字符串标量时,它必须与 Options
数组中的某个元素匹配。但是,如果调用没有 Options
参数的 uiconfirm
,则 CancelOption
必须是 'OK'
或 'Cancel'
。
如果指定整数,则它必须在 [1, n] 范围内,其中 n 是 Options
数组的长度。如果调用没有 Options
参数的 uiconfirm
,则 CancelOption
必须是 1
或 2
。
3.2.3 定义 CloseFcn
回调
CloseFcn
名称-值对组参数可用于在对话框关闭时执行特定的任务。在 App 设计工具中定义 CloseFcn
回调在 App 设计工具中以私有函数的形式编写该回调。
首先选择 接下来,编写私有函数:
function mycallback(app,src,event) display(event.SelectedOption); end
将该命令添加到要显示对话框的回调函数中。在本例中,目标图窗为 app.UIFigure
,这是图窗在 App 设计工具中的默认名称。
uiconfirm(app.UIFigure,'Close document?','Confirm Close',... 'CloseFcn',@(src,event)mycallback(app,src,event));
当用户触发创建对话框的回调时,对话框将显示在 App 中。
关闭操作回调函数,指定为下列值之一:
-
函数句柄。
-
第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参数。
-
包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。
此回调可用于在对话框关闭时执行特定的任务。
如果将 CloseFcn
指定为函数句柄(或包含函数句柄的元胞数组),则 MATLAB 会将包含事件数据的 struct
作为输入参数传递给回调函数。此 struct
包含下表中介绍的字段。
3.3 示例演示
function plot1ButtonPushed(app, event)
selection=uiconfirm(app.UIFigure,'请查看数据的单位是否正确','确认对话框');
if selection=="确定"
n=100;
s=0:app.L1/n:app.L1;
j=n/2;
q=0:app.dQ:app.Q;
m=length(q);
cla(app.qlUIAxes)
hold(app.qlUIAxes,'on');
z=0;
z0=1/m;
for i=q
d=uiprogressdlg(app.UIFigure,'Title','Please Wait',...
'Message','数据处理中','value',z);
xishu(app,i,app.L1,s,j);
z=z+z0;
end
close(d);
end