QInputDialog Class
QInputDialog 类提供了一个简单的便捷对话框,用于从用户处获取单个值。更多内容...
| 头文件: | #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 以及“标准对话框”示例。
成员类型文档
enum 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> 的 typedef。它存储 InputDialogOption 值的按“或”运算组合。
另请参阅 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
该属性用于指定输入对话框中使用的下拉列表框是否可编辑
Access 函数:
| bool | isComboBoxEditable() const |
| void | setComboBoxEditable(bool editable) |
comboBoxItems : QStringList
该属性存储输入对话框中下拉列表框所使用的项目
Access 函数:
| 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) |
通知信号:
| 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)
每当对话框中的双精度数值发生变化时,都会触发此信号。当前数值由 `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 时,*ok 将被设置为 true;当用户按下Cancel 时,则被设置为 false。该对话框的父窗口是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 时,*ok将被设置为 true;当用户按下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 是显示给用户的文本(应说明需要输入的内容)。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 时*ok将被设为 true,按下Cancel 时则设为 false。该对话框的父窗口为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 ”模式使用时,此信号才相关。
© 2026 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.