MATLAB app designer 菜鳥進階學習(三)


3.創建確認對話框

  在app設計中,確認對話框是不可缺少的存在,如關閉app前的提醒、修改參數之后的提醒,可以規避在操作過程中的失誤,從而避免數據等的丟失

3.1 創建對話框語法

uiconfirm(f,message,title)
uiconfirm(f,message,title,Name,Value)
selection = uiconfirm(___)

  其中,uiconfirm(f,message,title) 在目標圖窗 f 中顯示一個 App 內模態確認對話框。此語法顯示供用戶選擇的兩個選項 OK 和 Cancel。顯示該對話框時,對話框后面的圖窗不可訪問,但可以訪問 MATLAB® 命令提示。

  uiconfirm(f,message,title,Name,Value) 顯示確認對話框,其中有一個或多個可自定義對話框外觀和行為的 Name,Value 對組參數。例如,您可以在對話框中指定一組自定義選項,而不是默認的 OK 和 Cancel。

  selection = uiconfirm(___) 以字符向量形式返回用戶的選擇。可以結合上述任一語法使用 selection 輸出參數。如果使用此語法,顯示對話框時 MATLAB 命令提示將不可訪問。

  message:要顯示的消息,指定為字符向量、字符向量元胞數組或字符串數組。當消息有多行文本時,指定元胞數組或字符串數組。數組中的每個元素對應於一行文本。

  title:對話框標題,指定為字符向量或字符串標量。

  指定可選的、以逗號分隔的 Name,Value 對組參數。Name 為參數名稱,Value 為對應的值。Name 必須放在引號中。您可采用任意順序指定多個名稱-值對組參數,如 Name1,Value1,...,NameN,ValueN 所示。

3.2 詳述

  根據不同的應用場景,對話框的個性化設計分別為下述幾種

3.2.1 指定不同的圖標 

selection = uiconfirm(app.UIFigure,'Close document?','Confirm Close',...
                        'Icon','warning');

  

  當你點擊ok后,uiconfirm 將以字符向量形式返回該選項,即返回“ok”。

  其中,系統預定義圖標的類型包括:

 

 同時可以自定義圖標,可將自定義圖標指定為下列值之一:

  • 字符向量,指定 MATLAB 路徑中的 SVG、JPEG、GIF 或 PNG 圖像的文件名。也可以指定圖像文件的完整路徑。

  • 真彩色圖像數組

3.2.2 指定自定義選項

  例:創建一個確認對話框,其中包含三個選項:Overwrite、Save as new 和 Cancel。指定 Save as new 作為默認選項,並指定 Cancel 作為與取消行為對應的選項。

msg = 'Saving these changes will overwrite previous changes.';
title = 'Confirm Save';
selection = uiconfirm(f,msg,title,...
           'Options',{'Overwrite','Save as new','Cancel'},...
           'DefaultOption',2,'CancelOption',3);

 

  Options: 自定義選項,指定為字符向量元胞數組或字符串數組。

  DefaultOption:默認選項,指定為字符向量、字符串標量或整數。默認選項對應於對話框中默認情況下獲得焦點的按鈕。

  指定字符向量或字符串標量時,它必須與 Options 數組中的某個元素匹配。但是,如果調用沒有 Options 參數的 uiconfirm,則 DefaultOption 必須是 'OK' 或 'Cancel'

  如果指定整數,則它必須在 [1, n] 范圍內,其中 n 是 Options 數組的長度。如果調用沒有 Options 參數的 uiconfirm,則 DefaultOption 必須是 1 或 2

  'CancelOption' :取消選項,指定為字符向量、字符串標量或整數。取消選項指定與對話框中的取消操作對應的選項。

當指定字符向量或字符串標量時,它必須與 Options 數組中的某個元素匹配。但是,如果調用沒有 Options 參數的 uiconfirm,則 CancelOption 必須是 'OK' 或 'Cancel'

  如果指定整數,則它必須在 [1, n] 范圍內,其中 n 是 Options 數組的長度。如果調用沒有 Options 參數的 uiconfirm,則 CancelOption 必須是 1 或 2

3.2.3 定義 CloseFcn 回調

  CloseFcn 名稱-值對組參數可用於在對話框關閉時執行特定的任務。在 App 設計工具中定義 CloseFcn 回調在 App 設計工具中以私有函數的形式編寫該回調。

首先選擇代碼視圖。然后選擇函數 > 私有函數,以創建私有函數。接下來,編寫私有函數:

function mycallback(app,src,event)
   display(event.SelectedOption);
end

  將該命令添加到要顯示對話框的回調函數中。在本例中,目標圖窗為 app.UIFigure,這是圖窗在 App 設計工具中的默認名稱。

uiconfirm(app.UIFigure,'Close document?','Confirm Close',...
            'CloseFcn',@(src,event)mycallback(app,src,event));

  當用戶觸發創建對話框的回調時,對話框將顯示在 App 中。

 

  關閉操作回調函數,指定為下列值之一:

 

  • 函數句柄。

  • 第一個元素是函數句柄的元胞數組。元胞數組中的后續元素是傳遞到回調函數的參數。

  • 包含有效 MATLAB 表達式的字符向量(不推薦)。MATLAB 在基礎工作區計算此表達式。

 

  此回調可用於在對話框關閉時執行特定的任務。

 

  如果將 CloseFcn 指定為函數句柄(或包含函數句柄的元胞數組),則 MATLAB 會將包含事件數據的 struct 作為輸入參數傳遞給回調函數。此 struct 包含下表中介紹的字段。

 

 

3.3 示例演示

 

function plot1ButtonPushed(app, event)
        selection=uiconfirm(app.UIFigure,'請查看數據的單位是否正確','確認對話框');  
        if selection=="確定"
          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);
        end

  


免責聲明!

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



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