QInputDialog Class

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

Header: #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标准对话框示例

成员类型文档

枚举 QInputDialog::InputDialogOption
flags QInputDialog::InputDialogOptions

该枚举指定了影响输入对话框外观的各种选项。

常量说明
QInputDialog::NoButtons0x00000001不显示OKCancel 按钮(对 "实时对话框 "有用)。
QInputDialog::UseListViewForComboBoxItems0x00000002使用QListView 而不是不可编辑的QComboBox 来显示用setComboBoxItems() 设置的项目。
QInputDialog::UsePlainTextEditForTextInput0x00000004使用QPlainTextEdit 进行多行文本输入。该值在 5.2 中引入。

InputDialogOptions 类型是QFlags<InputDialogOption> 的类型定义。它存储了 InputDialogOption 值的 OR 组合。

另请参阅 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

此属性用于确定输入对话框中使用的组合框是否可编辑

访问功能:

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 为非空 *,则如果用户按下OKok 将被设为 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)

该函数将其中一个信号连接到receivermember 中指定的槽。具体信号取决于member 中指定的参数。这些参数是

对话框关闭时,信号将从槽中断开。

void QInputDialog::setDoubleRange(double min, double max)

设置对话框在DoubleInput 模式下使用时可接受的双精度浮点数值范围,最小值和最大值分别由minmax 指定。

void QInputDialog::setIntRange(int min, int max)

设置在IntInput 模式下使用对话框时可接受的整数值范围,最小值和最大值分别由minmax 指定。

void QInputDialog::setOption(QInputDialog::InputDialogOption option, bool on = true)

如果on 为 true,则设置option 为启用状态;否则,清除给定的option

另请参阅 optionstestOption()。

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

另请参阅 optionssetOption()。

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