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 内模态确认对话框。此语法显示供用户选择的两个选项 OK 和 Cancel。显示该对话框时,对话框后面的图窗不可访问,但可以访问 MATLAB® 命令提示。

  uiconfirm(f,message,title,Name,Value) 显示确认对话框,其中有一个或多个可自定义对话框外观和行为的 Name,Value 对组参数。例如,您可以在对话框中指定一组自定义选项,而不是默认的 OK 和 Cancel。

  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 指定自定义选项

  例:创建一个确认对话框,其中包含三个选项:Overwrite、Save as new 和 Cancel。指定 Save as new 作为默认选项,并指定 Cancel 作为与取消行为对应的选项。

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

  

posted on 2020-04-02 12:47  挽年_Sonny  阅读(7749)  评论(0编辑  收藏  举报

导航