QInputDialog Class
QInputDialog 类提供了一个简单方便的对话框,用于从用户处获取单个值。更多
Header: | #include <QInputDialog> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
继承: | QDialog |
- 所有成员的列表,包括继承成员
- QInputDialog 是标准对话框的一部分。
公共类型
enum | InputDialogOption { NoButtons, UseListViewForComboBoxItems, UsePlainTextEditForTextInput } |
flags | InputDialogOptions |
enum | InputMode { TextInput, IntInput, DoubleInput } |
属性
|
|
公共函数
QInputDialog(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) | |
virtual | ~QInputDialog() |
QString | cancelButtonText() const |
QStringList | comboBoxItems() const |
int | doubleDecimals() const |
double | doubleMaximum() const |
double | doubleMinimum() const |
double | doubleStep() const |
double | doubleValue() const |
QInputDialog::InputMode | inputMode() const |
int | intMaximum() const |
int | intMinimum() const |
int | intStep() const |
int | intValue() const |
bool | isComboBoxEditable() const |
QString | labelText() const |
QString | okButtonText() const |
void | open(QObject *receiver, const char *member) |
QInputDialog::InputDialogOptions | options() const |
void | setCancelButtonText(const QString &text) |
void | setComboBoxEditable(bool editable) |
void | setComboBoxItems(const QStringList &items) |
void | setDoubleDecimals(int decimals) |
void | setDoubleMaximum(double max) |
void | setDoubleMinimum(double min) |
void | setDoubleRange(double min, double max) |
void | setDoubleStep(double step) |
void | setDoubleValue(double value) |
void | setInputMode(QInputDialog::InputMode mode) |
void | setIntMaximum(int max) |
void | setIntMinimum(int min) |
void | setIntRange(int min, int max) |
void | setIntStep(int step) |
void | setIntValue(int value) |
void | setLabelText(const QString &text) |
void | setOkButtonText(const QString &text) |
void | setOption(QInputDialog::InputDialogOption option, bool on = true) |
void | setOptions(QInputDialog::InputDialogOptions options) |
void | setTextEchoMode(QLineEdit::EchoMode mode) |
void | setTextValue(const QString &text) |
bool | testOption(QInputDialog::InputDialogOption option) const |
QLineEdit::EchoMode | textEchoMode() const |
QString | textValue() const |
重新实现的公共函数
virtual void | done(int result) override |
virtual QSize | minimumSizeHint() const override |
virtual void | setVisible(bool visible) override |
virtual QSize | sizeHint() const override |
信号
void | doubleValueChanged(double value) |
void | doubleValueSelected(double value) |
void | intValueChanged(int value) |
void | intValueSelected(int value) |
void | textValueChanged(const QString &text) |
void | textValueSelected(const QString &text) |
静态公共成员
double | getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), double step = 1) |
int | getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) |
QString | getItem(QWidget *parent, const QString &title, const QString &label, const QStringList &items, int current = 0, bool editable = true, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone) |
QString | getMultiLineText(QWidget *parent, const QString &title, const QString &label, const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone) |
QString | getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone) |
详细说明
输入值可以是字符串、数字或列表中的项目。必须设置一个标签来告诉用户应该输入什么。
提供了五个静态便捷函数:getText(),getMultiLineText(),getInt(),getDouble() 和getItem() 。所有函数的使用方法类似,例如
bool ok{}; QString text = QInputDialog::getText(this, tr("QInputDialog::getText()"), tr("User name:"), QLineEdit::Normal, QDir::home().dirName(), &ok); if (ok && !text.isEmpty()) textLabel->setText(text);
如果用户点击OK ,则ok
变量设为 true;否则设为 false。
标准对话框示例展示了如何使用 QInputDialog 以及其他内置 Qt 对话框。
另请参阅 QMessageBox 和标准对话框示例。
成员类型文档
枚举 QInputDialog::InputDialogOption
flags QInputDialog::InputDialogOptions
该枚举指定了影响输入对话框外观的各种选项。
常量 | 值 | 说明 |
---|---|---|
QInputDialog::NoButtons | 0x00000001 | 不显示OK 和Cancel 按钮(对 "实时对话框 "有用)。 |
QInputDialog::UseListViewForComboBoxItems | 0x00000002 | 使用QListView 而不是不可编辑的QComboBox 来显示用setComboBoxItems() 设置的项目。 |
QInputDialog::UsePlainTextEditForTextInput | 0x00000004 | 使用QPlainTextEdit 进行多行文本输入。该值在 5.2 中引入。 |
InputDialogOptions 类型是QFlags<InputDialogOption> 的类型定义。它存储了 InputDialogOption 值的 OR 组合。
另请参阅 options,setOption() 和testOption() 。
enum QInputDialog::InputMode
该枚举描述了可为对话框选择的不同输入模式。
常数 | 值 | 说明 |
---|---|---|
QInputDialog::TextInput | 0 | 用于输入文本字符串。 |
QInputDialog::IntInput | 1 | 用于输入整数。 |
QInputDialog::DoubleInput | 2 | 用于输入双精度浮点数。 |
另请参阅 inputMode 。
属性文档
cancelButtonText : QString
此属性保存用于取消对话框的按钮的文本
访问功能:
QString | cancelButtonText() const |
void | setCancelButtonText(const QString &text) |
comboBoxEditable : bool
此属性用于确定输入对话框中使用的组合框是否可编辑
访问功能:
bool | isComboBoxEditable() const |
void | setComboBoxEditable(bool editable) |
comboBoxItems : QStringList
此属性用于保存输入对话框组合框中使用的项目
访问功能:
QStringList | comboBoxItems() const |
void | setComboBoxItems(const QStringList &items) |
doubleDecimals : int
以小数为单位设置双旋盒的精度
访问函数:
int | doubleDecimals() const |
void | setDoubleDecimals(int decimals) |
另请参见 QDoubleSpinBox::setDecimals().
doubleMaximum : double
该属性用于保存输入时接受的最大双精度浮点数值。
只有在DoubleInput 模式下使用输入对话框时,该属性才相关。
访问函数:
double | doubleMaximum() const |
void | setDoubleMaximum(double max) |
doubleMinimum : double
该属性用于保存输入时接受的最小双精度浮点数值。
只有在DoubleInput 模式下使用输入对话框时,该属性才相关。
访问函数:
double | doubleMinimum() const |
void | setDoubleMinimum(double min) |
doubleStep : double
该属性用于保存双数值增大和减小的步长。
只有在DoubleInput 模式下使用输入对话框时,该属性才有用。
访问函数:
double | doubleStep() const |
void | setDoubleStep(double step) |
doubleValue : int
该属性保存当前作为输入接受的双精度浮点数值。
只有在DoubleInput 模式下使用输入对话框时,该属性才相关。
访问功能:
double | doubleValue() const |
void | setDoubleValue(double value) |
通知信号:
void | doubleValueChanged(double value) |
inputMode : InputMode
该属性用于保存输入模式
此属性有助于确定在对话框中输入时使用哪个部件。
访问功能:
QInputDialog::InputMode | inputMode() const |
void | setInputMode(QInputDialog::InputMode mode) |
intMaximum : int
此属性用于保存输入时可接受的最大整数值。
只有在IntInput 模式下使用输入对话框时,此属性才有用。
访问函数:
int | intMaximum() const |
void | setIntMaximum(int max) |
intMinimum : int
此属性用于保存输入时可接受的最小整数值。
只有在IntInput 模式下使用输入对话框时,此属性才有用。
访问函数:
int | intMinimum() const |
void | setIntMinimum(int min) |
intStep : int
该属性用于设置整数值增大和减小的步长。
只有在IntInput 模式下使用输入对话框时,此属性才有用。
访问函数:
int | intStep() const |
void | setIntStep(int step) |
intValue : int
该属性保存当前输入的整数值。
只有在IntInput 模式下使用输入对话框时,此属性才相关。
访问功能:
int | intValue() const |
void | setIntValue(int value) |
通知信号:
void | intValueChanged(int value) |
labelText : QString
该属性包含标签文本,用于描述需要输入的内容
访问功能:
QString | labelText() const |
void | setLabelText(const QString &text) |
okButtonText : QString
此属性保存用于在对话框中接受输入的按钮的文本
访问功能:
QString | okButtonText() const |
void | setOkButtonText(const QString &text) |
options : InputDialogOptions
该属性包含影响对话框外观的各种选项
默认情况下,所有选项都是禁用的。
访问功能:
QInputDialog::InputDialogOptions | options() const |
void | setOptions(QInputDialog::InputDialogOptions options) |
另请参阅 setOption() 和testOption()。
textEchoMode : QLineEdit::EchoMode
该属性用于保存文本值的回声模式。
只有在TextInput 模式下使用输入对话框时,此属性才有用。
访问功能:
QLineEdit::EchoMode | textEchoMode() const |
void | setTextEchoMode(QLineEdit::EchoMode mode) |
textValue : QString
该属性用于保存输入对话框的文本值。
只有在TextInput 模式下使用输入对话框时,此属性才有用。
访问功能:
QString | textValue() const |
void | setTextValue(const QString &text) |
Notifier 信号:
void | textValueChanged(const QString &text) |
成员函数 文档
QInputDialog::QInputDialog(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
使用给定的parent 和窗口flags 构建新的输入框。
[virtual noexcept]
QInputDialog::~QInputDialog()
销毁输入对话框。
[override virtual]
void QInputDialog::done(int result)
重实现:QDialog::done(int r)。
关闭对话框并将其结果代码设为result 。如果使用exec() 显示此对话框,则 done() 会导致本地事件循环结束,而exec() 会返回result 。
另请参见 QDialog::done()。
[signal]
void QInputDialog::doubleValueChanged(double value)
每当对话框中的 double 值发生变化时,就会发出该信号。当前值由value 指定。
只有在DoubleInput 模式下使用输入对话框时,才会出现此信号。
注: 属性doubleValue 的通知信号。
[signal]
void QInputDialog::doubleValueSelected(double value)
每当用户通过接受对话框(例如单击OK 按钮)选择了一个双数值时,就会发出该信号。所选值由value 指定。
只有在DoubleInput 模式下使用输入对话框时,才会出现此信号。
[static]
double QInputDialog::getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), double step = 1)
静态方便函数,用于从用户处获取浮点数。
title label 是显示给用户的文本(应说明应输入的内容)。 是行编辑器将设置为的默认浮点数。 和 是用户可选择的最小值和最大值。 是数字的最大小数位数。 是用户按箭头按钮递增或递减数值时数值的变化量。value min max decimals step
如果ok 非空,*ok 将被设置为 "true"(如果用户按了OK )和 "false"(如果用户按了Cancel )。对话框的父级是parent 。该对话框将是模态对话框,并使用窗口部件flags 。
该函数返回用户输入的浮点数。
像这样使用该静态函数:
bool ok{}; double d = QInputDialog::getDouble(this, tr("QInputDialog::getDouble()"), tr("Amount:"), 37.56, -10000, 10000, 2, &ok, Qt::WindowFlags(), 1); if (ok) doubleLabel->setText(QStringLiteral("$%1").arg(d));
另请参阅 getText()、getInt()、getItem() 和getMultiLineText()。
[static]
int QInputDialog::getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
静态方便函数,用于从用户处获取整数输入值。
title label 是显示给用户的文本(应说明应输入的内容)。 是旋转框将设置的默认整数。 和 是用户可选择的最小值和最大值。 是用户按箭头按钮递增或递减数值时数值的变化量。value min max step
如果ok 为非空 *,则如果用户按下OK ,ok 将被设为 true;如果用户按下Cancel , 将被设为 false。对话框的父级是parent 。该对话框将是模态对话框,并使用部件flags 。
成功时,该函数返回用户输入的整数;失败时,返回初始值value 。
像这样使用此静态函数:
bool ok; int i = QInputDialog::getInt(this, tr("QInputDialog::getInt()"), tr("Percentage:"), 25, 0, 100, 1, &ok); if (ok) integerLabel->setText(tr("%1%").arg(i));
另请参阅 getText()、getDouble()、getItem() 和getMultiLineText()。
[static]
QString QInputDialog::getItem(QWidget *parent, const QString &title, const QString &label, const QStringList &items, int current = 0, bool editable = true, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
静态便利函数,用于让用户从字符串列表中选择项目。
title label 是显示给用户的文本(应说明应输入的内容)。 是插入组合框的字符串列表。 是项目的编号,应为当前项目。 是输入法提示,如果组合框可编辑且输入法处于活动状态,则将使用该提示。items current inputMethodHints
如果editable 为 true,用户可以输入自己的文本;否则,用户只能从现有项目中选择一个。
如果ok 为非空,*ok将被设置为 true(如果用户按了OK )��如果用户按了Cancel ,*ok 将被设置为 false(如果用户按了 )。对话框的父级是parent 。该对话框将是模态对话框,并使用部件flags 。
此函数返回当前项目的文本,如果editable 为 true,则返回组合框的当前文本。
像这样使用此静态函数:
const QStringList items{tr("Spring"), tr("Summer"), tr("Fall"), tr("Winter")}; bool ok{}; QString item = QInputDialog::getItem(this, tr("QInputDialog::getItem()"), tr("Season:"), items, 0, false, &ok); if (ok && !item.isEmpty()) itemLabel->setText(item);
另请参阅 getText()、getInt()、getDouble() 和getMultiLineText()。
[static]
QString QInputDialog::getMultiLineText(QWidget *parent, const QString &title, const QString &label, const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
从用户获取多行字符串的静态方便函数。
title label 是显示给用户的文本(应说明应输入的内容)。 是放置在纯文本编辑器中的默认文本。 是输入法提示,如果输入法处于活动状态,将在编辑 widget 中使用。text inputMethodHints
如果ok 为非空,*ok将在用户按下OK 时设置为 true,在用户按下Cancel 时设置为 false。对话框的父级是parent 。对话框将是模式对话框,并使用指定的窗口小部件flags 。
如果对话框被接受,该函数将返回对话框纯文本编辑器中的文本。如果对话框被拒绝,则返回空QString 。
使用此静态函数的方法如下:
bool ok{}; QString text = QInputDialog::getMultiLineText(this, tr("QInputDialog::getMultiLineText()"), tr("Address:"), "John Doe\nFreedom Street"_L1, &ok); if (ok && !text.isEmpty()) multiLineTextLabel->setText(text);
另请参阅 getInt()、getDouble()、getItem() 和getText()。
[static]
QString QInputDialog::getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
从用户获取字符串的静态方便函数。
title label 是显示给用户的文本(应说明应输入的内容)。 是放置在行编辑器中的默认文本。 是行编辑器将使用的回声模式。 是输入法提示,如果输入法处于活动状态,将在编辑部件中使用。text mode inputMethodHints
如果ok 非空,*ok将被设置为 "true"(如果用户按了OK )和 "false"(如果用户按了Cancel )。对话框的父级是parent 。对话框将是模式对话框,并使用指定的窗口小部件flags 。
如果对话框被接受,该函数将返回对话框行编辑器中的文本。如果对话框被拒绝,则返回空QString 。
使用此静态函数的方法如下:
bool ok{}; QString text = QInputDialog::getText(this, tr("QInputDialog::getText()"), tr("User name:"), QLineEdit::Normal, QDir::home().dirName(), &ok); if (ok && !text.isEmpty()) textLabel->setText(text);
另请参阅 getInt()、getDouble()、getItem() 和getMultiLineText()。
[signal]
void QInputDialog::intValueChanged(int value)
每当对话框中的整数值发生变化时,就会发出该信号。当前值由value 指定。
只有在IntInput 模式下使用输入对话框时,才会出现此信号。
注: 属性intValue 的通知信号。
[signal]
void QInputDialog::intValueSelected(int value)
每当用户通过接受对话框(例如单击OK 按钮)选择一个整数值时,就会发出该信号。所选值由value 指定。
只有在IntInput 模式下使用输入对话框时,才会出现此信号。
[override virtual]
QSize QInputDialog::minimumSizeHint() const
重实现:QDialog::minimumSizeHint() const.
void QInputDialog::open(QObject *receiver, const char *member)
该函数将其中一个信号连接到receiver 和member 中指定的槽。具体信号取决于member 中指定的参数。这些参数是
- textValueSelected() 如果member 的第一个参数是QString 。
- intValueSelected() 如果member 的第一个参数是 int。
- doubleValueSelected() 如果member 的第一个参数是 double。
- accepted() 如果member 没有参数。
对话框关闭时,信号将从槽中断开。
void QInputDialog::setDoubleRange(double min, double max)
设置对话框在DoubleInput 模式下使用时可接受的双精度浮点数值范围,最小值和最大值分别由min 和max 指定。
void QInputDialog::setIntRange(int min, int max)
设置在IntInput 模式下使用对话框时可接受的整数值范围,最小值和最大值分别由min 和max 指定。
void QInputDialog::setOption(QInputDialog::InputDialogOption option, bool on = true)
如果on 为 true,则设置option 为启用状态;否则,清除给定的option 。
另请参阅 options 和testOption()。
[override virtual]
void QInputDialog::setVisible(bool visible)
重实现:QDialog::setVisible(bool visible)。
[override virtual]
QSize QInputDialog::sizeHint() const
重实现:QDialog::sizeHint() const.
bool QInputDialog::testOption(QInputDialog::InputDialogOption option) const
如果给定的option 已启用,则返回true
;否则返回 false。
[signal]
void QInputDialog::textValueChanged(const QString &text)
每当对话框中的文本字符串发生变化时,就会发出该信号。当前字符串由text 指定。
只有在TextInput 模式下使用输入对话框时,才会出现此信号。
注: 属性textValue 的通知信号。
[signal]
void QInputDialog::textValueSelected(const QString &text)
每当用户通过接受对话框(例如单击OK 按钮)选择文本字符串时,就会发出该信号。所选字符串由text 指定。
只有在TextInput 模式下使用输入对话框时,才会出现此信号。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.