QInputDialog Class
QInputDialog类提供了一个简单方便的对话框,可以从用户那里获取单个值。
Header | #include < QInputDialog > |
---|---|
qmake | QT += widgets |
Inherits | QDialog |
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。
标准对话框示例演示如何使用QInputDialog以及其他内置Qt对话框。
公共类型
enum InputDialogOption
flags InputDialogOptions
此枚举指定影响输入对话框外观的各种选项。
Constant | Value | Description |
---|---|---|
QInputDialog::NoButtons | 0x00000001 | 不显示“确定”和“取消”按钮(对“实时对话”有用)。 |
QInputDialog::UseListViewForComboBoxItems | 0x00000002 | 使用QListView而不是不可编辑的QComboBox来显示使用setComboBoxItems() 设置的项。 |
QInputDialog::UsePlainTextEditForTextInput | 0x00000004 | 使用QPlainTextEdit进行多行文本输入。该值在5.2中引入。 |
enum InputMode
此枚举描述可为对话框选择的不同输入模式。
Constant | Value | Description |
---|---|---|
QInputDialog::TextInput | 0 | 用于输入文本字符串。 |
QInputDialog::IntInput | 1 | 用于输入整数。 |
QInputDialog::DoubleInput | 2 | 用于以双精度精度输入浮点数。 |
属性
-
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)
-
doubleMaximum: double 保存接受为输入的最大双精度浮点值
只有在 DoubleInput 模式下使用输入对话框时,此属性才相关。
- double doubleMaximum() const
- void setDoubleMaximum(double max)
-
doubleMinimum: double 保存接受为输入的最小双精度浮点值
只有在 DoubleInput 模式下使用输入对话框时,此属性才相关。
- double doubleMinimum() const
- void setDoubleMinimum(double min)
-
doubleStep: double 包含双精度值的增减步长
- double doubleStep() const
- void setDoubleStep(double step)
-
doubleValue: int 保存当前接受为输入的双精度浮点值
- double doubleValue() const
- void setDoubleValue(double value)
Notifier signal:
- void doubleValueChanged(double value)
-
inputMode: InputMode 保存用于输入的模式
此属性有助于确定用于将输入输入输入到对话框中的小部件。
- QInputDialog::InputMode inputMode() const
- void setInputMode(QInputDialog::InputMode mode)
-
intMaximum: int
- int intMaximum() const
- void setIntMaximum(int max)
-
intMinimum: int
- int intMinimum() const
- void setIntMinimum(int min)
-
intStep: int
- int intStep() const
- void setIntStep(int step)
-
intValue: int
- int intValue() const
- void setIntValue(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)
-
textEchoMode: QLineEdit::EchoMode 保存文本值的回显模式
只有在文本输入模式下使用输入对话框时,此属性才相关。
- QLineEdit::EchoMode textEchoMode() const
- void setTextEchoMode(QLineEdit::EchoMode mode)
-
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);