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