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) 命令關閉對話框。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM