3.創建確認對話框
在app設計中,確認對話框是不可缺少的存在,如關閉app前的提醒、修改參數之后的提醒,可以規避在操作過程中的失誤,從而避免數據等的丟失
3.1 創建對話框語法
uiconfirm(f,message,title) uiconfirm(f,message,title,Name,Value) selection = uiconfirm(___)
其中,uiconfirm(
在目標圖窗 f
,message
,title
)f
中顯示一個 App 內模態確認對話框。此語法顯示供用戶選擇的兩個選項
uiconfirm(
顯示確認對話框,其中有一個或多個可自定義對話框外觀和行為的 f
,message
,title
,Name,Value
)Name,Value
對組參數。例如,您可以在對話框中指定一組自定義選項,而不是默認的
以字符向量形式返回用戶的選擇。可以結合上述任一語法使用 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 指定自定義選項
例:創建一個確認對話框,其中包含三個選項:
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