创建进度对话框
在编写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.确定进度条
确定进度条即如下图所示,可实时反映进程的进度条。
app.UIFigured
= uiprogressdlg(,
使用 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 d.CancelRequested
- break
- end