Main Content

uigetpref

创建根据用户预设项打开的对话框

说明

pval = uigetpref(group,pref,title,quest,pbtns) 创建一个使用指定组名称和预设项名称打开的非模态对话框。组名称和预设项名称结合起来可以唯一标识该对话框。对话框中包含以下内容:

  • 指定的问题 (quest) 以及供对话框用户回答该问题的一个或多个按钮 (pbtns)。以 pval 形式返回所点击按钮的值。

  • 一个复选框,默认情况标记为不再显示此对话框

如果用户选中该复选框,MATLAB® 将存储并返回所点击按钮的值作为预设项值 (pval)。以后再调用 uigetpref 操作同一个对话框时,系统会检测到已经存储了预设项值,并应用该选择,而不再打开对话框。

如果用户没有选中该复选框,MATLAB 将返回所点击按钮的值,但不会存储该值。相反,MATLAB 会存储值 'ask'。这样以后再调用 uigetpref 时,MATLAB 还会打开指定的对话框。

示例

[pval,tf] = uigetpref(group,pref,title,quest,pbtns) 返回一个逻辑值,指示是否打开了对话框。如果打开了对话框,则 tf 的值为 1 (true)。否则,tf 的值为 0 (false)。

示例

[___] = uigetpref(___,Name,Value) 指定一个或多个可选的名称-值参数,您可以使用这些对组来执行以下任意操作。

  • 自定义复选框标签。

  • 指定打开对话框时是否选中复选框。

  • 提供帮助按钮以及帮助按钮的回调。

  • 指定未关联预设项值的按钮。

  • 指定当用户在不点击预设项按钮的情况下关闭对话框时 uigetprefpval 返回的值。例如,如果用户点击对话框关闭按钮 (X)、按键盘上的 Esc 键或者点击未关联预设项值的按钮,则会返回此值。

可以将此选项与上述语法中的任何输出参数结合使用。

示例

全部折叠

定义每个必需的 uigetpref 输入参数,然后将它们传递给 uigetpref

group = "Updates";
pref = "Conversion";
title = "Converting";
quest = ["Are you sure you want to convert this code?", ...
         "Conversions cannot be undone."];
pbtns = ["Yes","No"];

[pval,tf] = uigetpref(group,pref,title,quest,pbtns)

Preferences dialog box with custom title and body text. The dialog box also has a check box with the text "Do not show this dialog again." and two buttons, "Yes" and "No".

点击 Yes。MATLAB 命令行窗口显示 pval 的值为 'yes'tf 的值为 1,指示显示了该对话框。

再次运行 uigetpref 命令,但这次选中不再显示此对话框,然后点击

[pval,tf] = uigetpref(group,pref,title,quest,pbtns)

Preferences dialog box. The check box is selected, and the mouse cursor is over the "No" button.

MATLAB 命令行窗口显示 pval 的值为 'no'tf 的值为 1

再次运行 uigetpref 命令。

[pval,tf] = uigetpref(group,pref,title,quest,pbtns)

与预期一致,这次不再显示对话框。MATLAB 命令行窗口显示 pval 的值为 'no'tf 的值为 0

通过将预设项值设置为 'ask',重新启用该对话框的显示。

setpref('Updates','Conversion','ask');

再次运行 uigetpref 命令。对话框再次打开。

[pval,tf] = uigetpref(group,pref,title,quest,pbtns)

Preferences dialog box

"ExtraOptions" 名称-值参数指定为 "Cancel" 以在对话框中添加取消按钮。如果用户点击 Cancel,MATLAB 会将按钮标签返回给 pval

group = "Updates";
pref =  "Conversion";
title = "Converting";
quest = ["Are you sure you want to convert this code?", ...
         "Conversions cannot be undone."];
pbtns = ["Yes","No"];

[pval] = uigetpref(group,pref,title,quest,pbtns, ...
"ExtraOptions","Cancel");

Preferences dialog box with custom title and body text. The dialog box also has a check box with the text "Do not show this dialog again." and three buttons, "Yes", "No", and "Cancel".

创建一个函数,用它创建一个收集用户预设项的对话框。在用户关闭图窗之前,该对话框会询问用户是否要保存图窗。根据用户点击的按钮的值,此函数将打开“保存”对话框,或者关闭图窗而不保存。

function savefigconditionally
fig = gcf;

group = "mygraphics";
pref = "savefigbeforeclosing";
title = "Closing Figure";
quest = ["Do you want to save your figure before closing?", ...
         "", ...
         "If you do not save the figure, all changes will be lost"];
pbtns = ["Yes","No"];
[pval,tf] = uigetpref(group,pref,title,quest,pbtns);

switch pval
    case 'yes'  
        [file,path,indx] = uiputfile("fig", ...
            "Save current figure", ...
            "untitled.fig");
         if indx == 0    
             delete(fig);
         else                   
             saveas(fig,[path,file])
             delete(fig);
         end
     case 'no'               
         delete(fig);
         return
 end
 end

要运行此示例,请复制代码并将其粘贴到一个新的程序文件中。将该文件命名为 savefigconditionally.m 并将其保存到搜索路径中。要在图窗关闭时执行该函数,请将其指定为图窗 CloseRequestFcn 回调。例如,创建一个图窗并绘制一些数据。

figure("CloseRequestFcn","savefigconditionally");
x = [1 2 3 4 5];
y = [10 50 25 75 25];
plot(x,y);
每次运行上述命令块并点击图窗标题栏中的关闭按钮 (X) 时,该对话框都会打开,除非选中不再显示此对话框

Preferences dialog box with custom title and body text. The dialog box also has a check box with the text "Do not show this dialog again." and two buttons, "Yes" and "No".

输入参数

全部折叠

预设项组名称,指定为字符向量或字符串标量。该组包含由 pref 输入参数指定的预设项。如果该组不存在,MATLAB 会创建该组。

示例: "My Graphics"

预设项名称,指定为字符向量或字符串标量。

此预设项会存储用户点击的指定 pbtns 的按钮值。如果预设项名称不存在,MATLAB 会创建该名称。

示例: "Save Graphic"

对话框标题,指定为字符向量或字符串标量。

示例: "Save preference"

对话框中的问题,指定为字符串标量、字符串数组、字符向量或字符向量元胞数组。问题文本按如下方式换行:

  • 如果将问题指定为字符串标量或字符向量,将在竖线 (|) 字符后进行换行或在 newline 函数所指定的换行符后进行换行。

  • 如果将问题指定为字符串数组或字符向量元胞数组,将在每个数组元素后进行换行。

示例: ["Are you sure you want to convert this code?", "Conversions cannot be undone."]

示例: "Do you want to save this file before closing?"

预设项按钮标签,指定为字符串标量、字符串数组、字符向量或字符向量元胞数组。

如果要指定与按钮标签不同的内部预设项值,请将 pbtns 值指定为 2×n 元胞数组或字符串数组。第一行包含预设项名称,第二行包含关联的按钮标签。例如,如果您打算将对话框进行各种语言的本地化,则可以考虑使用这种方法。对于每种本地化语言,您可以使用该语言来指定按钮标签,而无需更改代码逻辑(例如 switchcase 语句)。

如果 pbtns 不是 2×n 数组,MATLAB 会将小写标签名称存储为预设项值。

示例: "Yes"

示例: ["Yes","No"]

示例: {'Oui','Non';'yes','no'} 将按钮标签设置为 'Oui''Non',将对应的预设项值设置为 'yes''no'

名称-值参数

将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参数名称,Value 是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: uigetpref(group,pref,title,quest,pbtns,"CheckboxState",1) 创建一个初始状态为复选框已选中的预设项对话框。

示例: "Do not ask again."

uigetpref(group,pref,title,quest,pbtns,CheckboxState=1) 创建一个初始状态为复选框已选中的预设项对话框。

对话框打开时复选框的初始状态,指定为 10truefalse

  • 当值为 true1 时,将选中复选框

  • 当值为 false0 时,不选中复选框。

复选框标签,指定为字符串标量或字符向量。

帮助按钮标签,指定为字符串标量或字符向量。如果不指定此名称-值参数,对话框中则不会显示帮助按钮。如果指定此名称-值参数,但没有指定 HelpFcn 名称-值参数,则 MATLAB 默认情况下使用 'doc(uigetpref)' 作为帮助按钮回调。

示例: "Info"

帮助按钮回调,指定为函数句柄、字符串标量或字符向量(不推荐)。当用户点击帮助按钮时,将执行该回调。指定此名称-值参数时,还必须指定 HelpString 名称-值参数。

有关回调的详细信息,请参阅Create Callbacks for Apps Created Programmatically

其他按钮的标签,指定为字符串标量、字符串数组、字符向量或字符向量元胞数组。这些附加按钮不会关联到任何预设项值。如果用户点击这些附加按钮中的任何按钮,对话框都将关闭并返回按钮标签作为输出参数 pval

示例: "Cancel"

默认按钮选择,指定为字符串标量或字符向量。如果用户关闭对话框而不点击任何按钮,将为 pval 返回默认的按钮选择。此值无需与任何预设项按钮或 ExtraOption 按钮对应。

示例: "nobtn"

输出参数

全部折叠

选定的预设项按钮,以字符向量形式返回。返回下列值之一:

  • 点击的预设项按钮的标签

  • 点击的预设项按钮的内部值

true 或 false 结果,返回 1 或 0。如果打开了对话框,则此函数返回 1 (true)。否则,将返回 0 (false)。此值对应于上次打开对话框时不再显示此对话框复选框是否处于选中状态。

详细信息

全部折叠

非模态对话框

非模态对话框允许用户在响应该对话框之前与其他 MATLAB 窗口进行交互。非模态对话框也称为普通对话框。

预设项

使用预设项可以指定应用程序的行为方式以及用户与其交互的方式。预设项在会话之间保持不变,并存储在预设项数据库中。

uigetpref 函数使用的预设项数据库与 MATLAB 内置产品相同。但是,uigetpref 将其设置的预设项注册为单独的列表,以便它和 uisetpref 可以管理这些预设。

要修改使用 uigetpref 注册的预设项,请使用 uisetprefsetpref。例如,使用 setpref 将预设项值更改为 'ask'

提示

  • uigetpref 创建指定的组和预设项(如果当前不存在)。要删除您不再需要的预设项组,请使用 rmpref 函数。

  • 要获得以前创建的组和预设项的结构体,请使用 getpref 函数。

  • 当用户选中不再显示此对话框复选框并关闭对话框之后,将不再为同一个组和预设项打开该对话框。要重新启用被取消的对话框,请使用 setpref 函数将预设项值设置为 'ask'

  • 对话框的用户并不知道您在创建对话框时指定的组和预设项的名称。因此,要重新启用被预设项抑制的对话框,用户可以调用 uisetpref 命令。

    uisetpref('clearall')
    按如上所示执行 uisetpref 将重新启用使用 uigetpref 定义的所有预设项对话框,而不仅仅是最新的预设项对话框。

版本历史记录

在 R2006a 之前推出