MATLAB app designer 菜鸟进阶学习(二)

  

创建进度对话框

  在编写APP时,有时候会发现程序需要执行较长一段时间,而这段时间界面如果没有任何变化,会影响交互性。因此,进度对话框的存在是界面人性化设计的重要一步。

函数语句:

d = uiprogressdlg(app.UIFigure,'Title','Approximating Pi',... 'Message','1','Cancelable','on');
% Close the dialog box
    close(d);

 创建进度条的方式即:

d = uiprogressdlg(app.UIFigure,'Title','Approximating Pi',... 'Message','1','Cancelable','on');
  这个语句中,Title是指对话框的标题,如图,标题内容为“Please wait”;Message是指对话框进度条的提示消息,如下图的“数据处理中”,
  Cancelable是指是否允许取消,允许取消,指定为 'off' 或 'on'
  值为 'on' 表示在对话框中显示取消按钮。可以通过指定 CancelText 属性来自定义按钮标签。
当允许取消时,必须检查 CancelRequested 属性的值,并在值为 true 时调用 close 函数。否则,对话框将无限期显示。(后面讲会提及)

   在进度结束后关闭对话框的方式为:close(d);


  下面针对不同的应用场景,介绍三种进度条

1.确定进度条

  确定进度条即如下图所示,可实时反映进程的进度条。

 

   d = uiprogressdlg(app.UIFigure,Name,Value) 使用 Name,Value 对组参数指定 ProgressDialog 属性值。可通过属性值控制对话框的外观和行为。例如,您可以在对话框中添加标题或消息,或者指定不确定进度条。

例如:

 

 function plot1ButtonPushed(app, event)
          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);

 

 为了使得进度随计算过程实时显示,可以直接将

d=uiprogressdlg(app.UIFigure,'Title','Please Wait',...
              'Message','数据处理中','value',z);
放入计算的循环中,并使value值随之变动。
value 值为0时,进度条为空,为1时,进度条为满,故而将value值设为1/循环次数,每循环一次叠加一次,从而实时显示。

 

2.不确定进度条

  不确定进度条即如下图所示,以动画方式显示的进度条,指示不知道预计完成时间。

 不确定性进度条的设置为

d = uiprogressdlg(app.UIFigure,'Title','Computing SVD',... 'Indeterminate','on');

  其他内容同上,要注意的是Indeterminate属性, 将 Indeterminate 属性设置为 'on' 将以动画方式显示进度条,指示不知道预计完成时间。计算完成后,将由 close函数关闭对话框

3.带有取消按钮的确定进度条

  带有取消按钮的确定进度条即如下图所示,可实时反映进程的进度条,也可以直接取消

   语句为

d = uiprogressdlg(app.UIFigure,'Title','Approximating Pi',... 'Message','1','Cancelable','on');

  其中,执行取消功能的是将 Cancelable 属性设置为 'on' 将创建默认标签为取消的取消按钮。

  另外,取消功能在执行时需要用if  break语句,以便在按下取消后及时退出

if d.CancelRequested
            break
        end

  该命令实时检查 d.CancelRequested 的值,以查看用户是否点击了取消按钮。如果该值为 true,则程序退出循环。最后,在计算结束或用户取消后,由 close(d) 命令关闭对话框。

 

posted on 2020-04-02 11:05  挽年_Sonny  阅读(10000)  评论(0编辑  收藏  举报

导航