QInputDialog 类

The QInputDialog class provides a simple convenience dialog to get a single value from the user. More...

头文件 #include <QInputDialog>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承 QDialog

公共类型

枚举InputDialogOption { NoButtons, UseListViewForComboBoxItems, UsePlainTextEditForTextInput }
标志InputDialogOptions
枚举InputMode { TextInput, IntInput, DoubleInput }

属性

公共函数

QInputDialog(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
virtual~QInputDialog()
QStringcancelButtonText() const
QStringListcomboBoxItems() const
intdoubleDecimals() const
doubledoubleMaximum() const
doubledoubleMinimum() const
doubledoubleStep() const
doubledoubleValue() const
QInputDialog::InputModeinputMode() const
intintMaximum() const
intintMinimum() const
intintStep() const
intintValue() const
boolisComboBoxEditable() const
QStringlabelText() const
QStringokButtonText() const
voidopen(QObject *receiver, const char *member)
QInputDialog::InputDialogOptionsoptions() const
voidsetCancelButtonText(const QString &text)
voidsetComboBoxEditable(bool editable)
voidsetComboBoxItems(const QStringList &items)
voidsetDoubleDecimals(int decimals)
voidsetDoubleMaximum(double max)
voidsetDoubleMinimum(double min)
voidsetDoubleRange(double min, double max)
voidsetDoubleStep(double step)
voidsetDoubleValue(double value)
voidsetInputMode(QInputDialog::InputMode mode)
voidsetIntMaximum(int max)
voidsetIntMinimum(int min)
voidsetIntRange(int min, int max)
voidsetIntStep(int step)
voidsetIntValue(int value)
voidsetLabelText(const QString &text)
voidsetOkButtonText(const QString &text)
voidsetOption(QInputDialog::InputDialogOption option, bool on = true)
voidsetOptions(QInputDialog::InputDialogOptions options)
voidsetTextEchoMode(QLineEdit::EchoMode mode)
voidsetTextValue(const QString &text)
booltestOption(QInputDialog::InputDialogOption option) const
QLineEdit::EchoModetextEchoMode() const
QStringtextValue() const

重写的公共函数

virtual voiddone(int result) override
virtual QSizeminimumSizeHint() const override
virtual voidsetVisible(bool visible) override
virtual QSizesizeHint() const override

信号

voiddoubleValueChanged(double value)
voiddoubleValueSelected(double value)
voidintValueChanged(int value)
voidintValueSelected(int value)
voidtextValueChanged(const QString &text)
voidtextValueSelected(const QString &text)

静态公共成员

doublegetDouble(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)
intgetInt(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())
QStringgetItem(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)
QStringgetMultiLineText(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)
QStringgetText(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 变量在用户点击 确定 时设置为 true;否则设置为 false。

Input Dialogs

示例代码 标准对话框 展示了如何使用 QInputDialog 以及其他内置的 Qt 对话框。

另请参阅QMessageBox标准对话框示例

成员类型文档

枚举 QInputDialog::InputDialogOption
标志 QInputDialog::InputDialogOptions

此枚举指定影响输入对话框外观和感觉的各种选项。

常量描述
QInputDialog::NoButtons0x00000001不显示 确定取消 按钮(对于“实时对话框”很有用)。
QInputDialog::UseListViewForComboBoxItems0x00000002对于使用 setComboBoxItems() 设置的项目,使用 QListView 而不是不可编辑的 QComboBox
QInputDialog::UsePlainTextEditForTextInput0x00000004使用 QPlainTextEdit 进行多行文本输入。此值在 5.2 中引入。

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

另请参阅optionssetOption() 和 testOption()。

枚举 QInputDialog::InputMode

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

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

另请参阅inputMode

属性文档

cancelButtonText : QString

此属性包含用于取消对话框的按钮文本。

访问函数

QStringcancelButtonText() const
voidsetCancelButtonText(const QString &text)

comboBoxEditable : bool

此属性包含用于输入对话框的复选框是否可编辑。

访问函数

boolisComboBoxEditable() const
voidsetComboBoxEditable(bool editable)

comboBoxItems : QStringList

此属性包含用于输入对话框复选框中的项目。

访问函数

QStringListcomboBoxItems() const
voidsetComboBoxItems(const QStringList &items)

doubleDecimals : int

设置双精度微调框的精度(小数点后的位数)。

访问函数

intdoubleDecimals() const
voidsetDoubleDecimals(int decimals)

另请参阅QDoubleSpinBox::setDecimals

doubleMaximum : double

此属性包含输入的双精度浮点数值的最大值。

当输入对话框用于DoubleInput模式时,该属性才有意义。

访问函数

doubledoubleMaximum() const
voidsetDoubleMaximum(double max)

doubleMinimum : double

此属性包含输入的双精度浮点数值的最小值。

当输入对话框用于DoubleInput模式时,该属性才有意义。

访问函数

doubledoubleMinimum() const
voidsetDoubleMinimum(double min)

doubleStep : double

此属性包含增加和减少双精度值时的步长。

当输入对话框用于DoubleInput模式时,该属性才有意义。

访问函数

doubledoubleStep() const
voidsetDoubleStep(double step)

doubleValue : int

此属性包含表示当前双精度浮点数值的整数。

当输入对话框用于DoubleInput模式时,该属性才有意义。

访问函数

doubledoubleValue() const
voidsetDoubleValue(double value)

通知信号

voiddoubleValueChanged(double value)

inputMode : InputMode

此属性包含输入模式。

此属性有助于确定用于输入对话框的哪个小部件。

访问函数

QInputDialog::InputModeinputMode() const
voidsetInputMode(QInputDialog::InputMode mode)

intMaximum : int

此属性包含接受的输入整数值的最大值。

当输入对话框用于IntInput模式时,该属性才有意义。

访问函数

intintMaximum() const
voidsetIntMaximum(int max)

intMinimum : int

该属性存储接受的输入的最小整数值。

当输入对话框用于IntInput模式时,该属性才有意义。

访问函数

intintMinimum() const
voidsetIntMinimum(int min)

intStep : int

该属性存储整数值增加和减少的步长。

当输入对话框用于IntInput模式时,该属性才有意义。

访问函数

intintStep() const
voidsetIntStep(int step)

intValue : int

该属性存储当前的输入整数值。

当输入对话框用于IntInput模式时,该属性才有意义。

访问函数

intintValue() const
voidsetIntValue(int value)

通知信号

voidintValueChanged(int value)

labelText : QString

该属性存储标签文本,描述需要输入的内容。

访问函数

QStringlabelText() const
voidsetLabelText(const QString &text)

okButtonText : QString

该属性存储用于接受对话框中录入的按钮的文本。

访问函数

QStringokButtonText() const
voidsetOkButtonText(const QString &text)

options : InputDialogOptions

该属性存储影响对话框外观和感觉的各个选项。

默认情况下,所有选项均被禁用。

访问函数

QInputDialog::InputDialogOptionsoptions() const
voidsetOptions(QInputDialog::InputDialogOptions options)

另请参阅setOption() 和 testOption

textEchoMode : QLineEdit::EchoMode

该属性存储文本值的回显模式。

此属性仅在以 TextInput 模式使用输入对话框时相关。

访问函数

QLineEdit::EchoModetextEchoMode() const
voidsetTextEchoMode(QLineEdit::EchoMode mode)

textValue : QString

该属性存储输入对话框的文本值。

此属性仅在以 TextInput 模式使用输入对话框时相关。

访问函数

QStringtextValue() const
voidsetTextValue(const QString &text)

通知信号

voidtextValueChanged(const QString &text)

成员函数文档

QInputDialog::QInputDialog(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

以给定的 父对象 和窗口 标志 构造一个新的输入对话框。

[虚函数 无异常抛出] QInputDialog::~QInputDialog()

销毁输入对话框。

[重写虚函数] void QInputDialog::done(int result)

重写了: QDialog::done(int r).

关闭对话框并将结果代码设置为 result。如果以 exec() 调用显示此对话框,则 done() 会导致本地事件循环结束,并从 exec() 返回 result

也请参阅 QDialog::done

[信号] void QInputDialog::doubleValueChanged(double value)

每当在对话框中双精度值发生变化时,此信号就会被触发。当前值由value指定。

此信号仅在输入对话框用于双精度输入模式时才有意义。

注意:属性doubleValue的通知信号。

[信号] void QInputDialog::doubleValueSelected(double value)

每当用户通过接受对话框(例如,通过单击确定按钮)选中一个双精度值时,都会发出此信号。选中的值由value指定。

此信号仅在输入对话框用于双精度输入模式时才有意义。

[静态] 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是行编辑框将被设置到的默认浮点数值。minmax是用户可以选择的最小和最大值。decimals是数字可能有的最大小数位数。step是用户按下箭头按钮递增或递减值的增量。

如果ok非空,*ok将在用户按确定按钮时设置为true,在用户按取消按钮时设置为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(QString("$%1").arg(d));

也请参阅 getTextgetIntgetItemgetMultiLineText

[静态] 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())

静态便捷函数,用于从用户处获取一个整数输入。

标题 是显示在对话框标题栏中的文本。 标签 是显示给用户的文本(它应该说明应该输入什么)。 是spinbox将被设置为的默认整数。 最小值最大值 是用户可以选择的最小和最大值。 步长 是用户按箭头按钮增减值时值变化的量。

如果 确定 非空 *确定 将设置为 true,如果用户按下 确定,如果用户按下 取消 则设置为 false。对话框的父级是 父级。对话框将是模态的,并使用小部件 标志

在成功的情况下,该函数返回用户输入的整数;在失败的情况下,它返回初始的

可以这样使用这个静态函数

    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

[静态] 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)

静态便利函数,让用户从一个字符串列表中选择一个项。

标题 是显示在对话框标题栏中的文本。 标签 是显示给用户的文本(它应该说明应该输入什么)。 项目 是插入到组合框中的字符串列表。 当前值 是应该作为当前项的项目编号。 输入法提示 是如果组合框可编辑且输入法处于活动状态时将使用的输入法提示。

如果 可编辑 为 true,用户可以输入自己的文本;否则,用户只能选择现有项目之一。

如果 ok 非空,*ok 将被设置为 true,如果用户按下 确定,如果用户按下 取消 将被设置为 false。对话框的父级是 父级。对话框将是模态的,并使用小部件 标志

这个函数返回当前项的文本,如果 可编辑 为 true,则返回组合框当前文本。

可以这样使用这个静态函数

    QStringList items;
    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

[静态] 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)

静态便利函数,从用户处获取多行字符串。

标题是显示在对话框标题栏中的文本。标签是显示给用户的文本(它应该指明需要输入的内容)。文本是放置在纯文本编辑框中的默认文本。inputMethodHints是如果输入法处于活动状态将用于编辑小部件的输入法提示。

如果ok非空,则当用户按下确定时,将*i*设置为true,当用户按下取消时,设置为false。对话框的父级是parent。对话框将是模态的,并使用指定的flags小部件。

如果对话框被接受,此函数将返回对话框的纯文本编辑框中的文本。如果对话框被拒绝,则返回一个空的QString

可以这样使用这个静态函数

    bool ok;
    QString text = QInputDialog::getMultiLineText(this, tr("QInputDialog::getMultiLineText()"),
                                                  tr("Address:"), "John Doe\nFreedom Street", &ok);
    if (ok && !text.isEmpty())
        multiLineTextLabel->setText(text);

另请参阅getInt()、getDouble()、getItem()和getText()。

[静态] 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)

静态方便函数,用于从用户处获取字符串。

标题是显示在对话框标题栏中的文本。标签是显示给用户的文本(它应该指明需要输入的内容)。文本是放置在行编辑中的默认文本。mode是行编辑将使用的回声模式。inputMethodHints是如果输入法处于活动状态将用于编辑小部件的输入法提示。

如果ok非空,则当用户按下确定时,将*i*设置为true,当用户按下取消时,设置为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()。

[信号] void QInputDialog::intValueChanged(int value)

每次在对话框中更改整数值时都会发出此信号。当前值由value指定。

此信号仅当在IntInput模式下使用输入对话框时才相关。

注意:属性intValue的通告信号。

[信号] void QInputDialog::intValueSelected(int value)

用户接受对话框(例如通过单击确定按钮)选择整数值时,将发出此信号;选定的值由value指定。

此信号仅当在IntInput模式下使用输入对话框时才相关。

[覆盖虚函数] 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模式下使用时,由对话框接受的double精度浮点值的范围,分别通过minmax指定最小和最大值。

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

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

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

如果on为true,则启用指定的option;否则,清除指定的option

另请参阅optionstestOption

[覆盖虚函数] void QInputDialog::setVisible(bool visible)

重新实现: QDialog::setVisible(bool visible).

[覆盖虚函数] QSize QInputDialog::sizeHint() const

重新实现: QDialog::sizeHint() const.

bool QInputDialog::testOption(QInputDialog::InputDialogOption option) const

如果给定的option被启用,则返回true;否则,返回false。

另请参阅optionssetOption

[信号] void QInputDialog::textValueChanged(const QString &text)

每当对话框中的文本字符串更改时,都会发出此信号。当前字符串由 text 指定。

此信号仅在输入对话框使用在 TextInput 模式时相关。

注意:属性 textValue 的通知信号。

[信号] void QInputDialog::textValueSelected(const QString &text)

当用户通过接受对话框选择文本字符串(例如,通过单击 OK 按钮)时,会发出此信号。所选字符串由 text 指定。

此信号仅在输入对话框使用在 TextInput 模式时相关。

© 2024 The Qt Company Ltd. 本文档中的文档贡献是各自所有者的版权。本提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 条款许可的。Qt 及其相应的标志是芬兰的 The Qt Company Ltd. 和/或世界其他国家/地区的商标。所有其他商标均为其各自所有者的财产。