本页内容

QInputDialog Class

QInputDialog 类提供了一个简单的便捷对话框,用于从用户处获取单个值。更多内容...

头文件: #include <QInputDialog>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
继承自: QDialog

公共类型

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::NoButtons0x00000001不显示“OK ”和“Cancel ”按钮(适用于“实时对话框”)。
QInputDialog::UseListViewForComboBoxItems0x00000002使用QListView (而非不可编辑的QComboBox )来显示通过setComboBoxItems()设置的项目。
QInputDialog::UsePlainTextEditForTextInput0x00000004对于多行文本输入,请使用QPlainTextEdit 。该值在 5.2 版本中引入。

InputDialogOptions 类型是QFlags<InputDialogOption> 的 typedef。它存储 InputDialogOption 值的按“或”运算组合。

另请参阅 options 、setOption() 和testOption()。

enum QInputDialog::InputMode

此枚举描述了对话框中可选的不同输入模式。

常量值描述
QInputDialog::TextInput0用于输入文本字符串。
QInputDialog::IntInput1用于输入整数。
QInputDialog::DoubleInput2用于输入双精度浮点数。

另请参阅 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 中指定的参数。这些参数包括:

当对话框关闭时,该信号将与插槽断开连接。

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。

另请参阅 options 和setOption()。

[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.