創建進度對話框
在編寫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
