对话框(07):【类】QInputDialog [官翻]

QInputDialog Class

QInputDialog类提供了一个简单方便的对话框,可以从用户那里获取单个值。

Header#include < QInputDialog >
qmakeQT += widgets
InheritsQDialog
Inherited By

详细说明

输入值可以是字符串、数字或列表中的项目。必须设置一个标签来告诉用户应该输入什么。

提供了五个静态便利函数: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。

Input Dialogs

标准对话框示例演示如何使用QInputDialog以及其他内置Qt对话框。

公共类型

enum InputDialogOption

flags InputDialogOptions

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

ConstantValueDescription
QInputDialog::NoButtons0x00000001不显示“确定”和“取消”按钮(对“实时对话”有用)。
QInputDialog::UseListViewForComboBoxItems0x00000002使用QListView而不是不可编辑的QComboBox来显示使用setComboBoxItems() 设置的项。
QInputDialog::UsePlainTextEditForTextInput0x00000004使用QPlainTextEdit进行多行文本输入。该值在5.2中引入。

enum InputMode

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

ConstantValueDescription
QInputDialog::TextInput0用于输入文本字符串。
QInputDialog::IntInput1用于输入整数。
QInputDialog::DoubleInput2用于以双精度精度输入浮点数。

属性

  1. cancelButtonText: QString 保存用于取消对话框的按钮的文本

    • QString cancelButtonText() const
    • void setCancelButtonText(const QString &text)
  2. comboBoxEditable: bool 保存输入对话框中使用的组合框是否可编辑

    • bool isComboBoxEditable() const
    • void setComboBoxEditable(bool editable)
  3. comboBoxItems: QStringList 保存在输入对话框的组合框中使用的项

    • QStringList comboBoxItems() const
    • void setComboBoxItems(const QStringList &items)
  4. doubleDecimals: int 以小数为单位设置双微调框的精度

    • int doubleDecimals() const
    • void setDoubleDecimals(int decimals)
  5. doubleMaximum: double 保存接受为输入的最大双精度浮点值

    只有在 DoubleInput 模式下使用输入对话框时,此属性才相关。

    • double doubleMaximum() const
    • void setDoubleMaximum(double max)
  6. doubleMinimum: double 保存接受为输入的最小双精度浮点值

    只有在 DoubleInput 模式下使用输入对话框时,此属性才相关。

    • double doubleMinimum() const
    • void setDoubleMinimum(double min)
  7. doubleStep: double 包含双精度值的增减步长

    • double doubleStep() const
    • void setDoubleStep(double step)
  8. doubleValue: int 保存当前接受为输入的双精度浮点值

    • double doubleValue() const
    • void setDoubleValue(double value)

    Notifier signal:

    • void doubleValueChanged(double value)
  9. inputMode: InputMode 保存用于输入的模式

    此属性有助于确定用于将输入输入输入到对话框中的小部件。

    • QInputDialog::InputMode inputMode() const
    • void setInputMode(QInputDialog::InputMode mode)
  10. intMaximum: int

    • int intMaximum() const
    • void setIntMaximum(int max)
  11. intMinimum: int

    • int intMinimum() const
    • void setIntMinimum(int min)
  12. intStep: int

    • int intStep() const
    • void setIntStep(int step)
  13. intValue: int

    • int intValue() const
    • void setIntValue(int value)
  14. labelText: QString 保存描述需要输入内容的标签文本

    • QString labelText() const
    • void setLabelText(const QString &text)
  15. okButtonText: QString 用于接受对话框中条目的按钮的文本

    • QString okButtonText() const
    • void setOkButtonText(const QString &text)
  16. options: InputDialogOptions 包含影响对话框外观的各种选项

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

    • QInputDialog::InputDialogOptions options() const
    • void setOptions(QInputDialog::InputDialogOptions options)
  17. textEchoMode: QLineEdit::EchoMode 保存文本值的回显模式

    只有在文本输入模式下使用输入对话框时,此属性才相关。

    • QLineEdit::EchoMode textEchoMode() const
    • void setTextEchoMode(QLineEdit::EchoMode mode)
  18. textValue: QString 保存输入对话框的文本值

    只有在文本输入模式下使用输入对话框时,此属性才相关。

    • QString textValue() const
    • void setTextValue(const QString &text)

公共函数

构造和析构

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

属性相关

  • QString cancelButtonText() const
    void setCancelButtonText(const QString &text)
  • bool isComboBoxEditable() const
    void setComboBoxEditable(bool editable)
  • QStringList comboBoxItems() const
    void setComboBoxItems(const QStringList &items)
  • int doubleDecimals() const
    void setDoubleDecimals(int decimals)
  • double doubleMaximum() const
    void setDoubleMaximum(double max)
  • double doubleMinimum() const
    void setDoubleMinimum(double min)
  • double doubleStep() const
    void setDoubleStep(double step)
  • double doubleValue() const
    void setDoubleValue(double value)
  • QInputDialog::InputMode inputMode() const
    void setInputMode(QInputDialog::InputMode mode)
  • int intMaximum() const
    void setIntMaximum(int max)
  • int intMinimum() const
    void setIntMinimum(int min)
  • int intStep() const
    void setIntStep(int step)
  • int intValue() const
    void setIntValue(int value)
  • QString labelText() const
    void setLabelText(const QString &text)
  • QString okButtonText() const
    void setOkButtonText(const QString &text)
  • QInputDialog::InputDialogOptions options() const
    void setOptions(QInputDialog::InputDialogOptions options)
  • QLineEdit::EchoMode textEchoMode() const
    void setTextEchoMode(QLineEdit::EchoMode mode)
  • QString textValue() const
    void setTextValue(const QString &text)

其它

  • void open(QObject *receiver, const char *member)

    此函数将其信号之一连接到接收器和成员指定的插槽。特定的信号取决于在成员中指定的参数。这些是:

    • 如果成员的第一个参数有QString,则返回textValueSelected()
    • 如果成员的第一个参数为int,则返回intValueSelected()
    • 如果成员的第一个参数为double,则返回doubleValueSelected()
    • 如果成员没有参数,则返回accepted()

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

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

范围

  • void setDoubleRange(double min, double max)
  • void setIntRange(int min, int max)

重写的公共函数

  • 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) 静态便利函数,从用户处获取浮点数

    • 标题title是显示在对话框标题栏中的文本
    • 标签label是显示给用户的文本(它应该说明应该输入什么)。
    • 值value 是行编辑将设置为的默认浮点数。
    • 最小值和最大值是用户可以选择的最小值和最大值。
    • 小数decimals 是数字的最大小数位数。
    • 步长step 是当用户按箭头按钮递增或递减值时值的变化量。
    • 如果ok为非空,则如果用户按ok,*ok将设置为true,如果用户按Cancel,则设置为false。
    • 对话框的父对象是父对象。对话框将是模态的,并使用小部件标志。

    像这样使用这个静态函数:

         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));
    
  • 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())

    静态便利函数,从用户处获取整数输入

         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));
    
  • 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)

    静态便利函数,允许用户从字符串列表中选择项目

         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);
    
  • 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)

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

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

    静态便利函数从用户处获取字符串

         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);
    
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值