文章目录
- 一、QInputDialog的介绍
- 二、 QInputDialog的基本用法
- 三、使用 QInputDialog的实例
- 四、QInputDialog的信号与槽
一、QInputDialog的介绍
QInputDialog 是 Qt 提供的一个对话框类,用于获取用户输入的文本、整数或浮点数。它提供了简单易用的静态方法和可定制的实例对象,适用于用户输入场景,如获取用户名、年龄、选项等。
QInputDialog 继承自 QDialog,主要用于输入以下三种类型的数据:
- 文本(QString)
- 整数(int)
- 浮点数(double)
可以以模态或非模态方式运行,并支持自定义提示信息、默认值、输入范围等。
二、 QInputDialog的基本用法
1.获取文本输入
QString text = QInputDialog::getText(this, "输入对话框", "请输入你的姓名:", QLineEdit::Normal, "默认值");
if (!text.isEmpty()) {qDebug() << "输入的文本:" << text;
}
- “输入对话框”:对话框标题。
- “请输入你的姓名:”:提示信息。
- QLineEdit::Normal:输入框类型,可选:QLineEdit::Normal(普通文本)、QLineEdit::Password(密码输入)、QLineEdit::NoEcho(不显示输入)。
- “默认值”:初始文本。
2.获取整数输入
int age = QInputDialog::getInt(this, "输入对话框", "请输入年龄:", 18, 0, 100, 1);
qDebug() << "输入的年龄:" << age;
3.获取浮点数输入
double salary = QInputDialog::getDouble(this, "输入对话框", "请输入工资:", 5000.0, 0.0, 100000.0, 2);
qDebug() << "输入的工资:" << salary;
4.获取列表选择
QStringList items = {"苹果", "香蕉", "橙子"};
QString fruit = QInputDialog::getItem(this, "选择对话框", "请选择一个水果:", items, 0, false);
qDebug() << "选择的水果:" << fruit;
三、使用 QInputDialog的实例
静态方法适用于简单场景,如果需要更多控制,可以创建 QInputDialog 实例:
QInputDialog dialog(this);
dialog.setLabelText("请输入用户名:");
dialog.setInputMode(QInputDialog::TextInput);
dialog.setTextValue("默认用户");
if (dialog.exec() == QDialog::Accepted) {QString username = dialog.textValue();qDebug() << "输入的用户名:" << username;
}
- setInputMode(QInputDialog::TextInput):设置输入模式:TextInput(文本)、IntInput(整数)、DoubleInput(浮点数)。
- exec():以模态方式显示对话框。
四、QInputDialog的信号与槽
对于非模态使用,可以连接信号槽:
QInputDialog *dialog = new QInputDialog(this);
dialog->setLabelText("请输入年龄:");
dialog->setInputMode(QInputDialog::IntInput);
dialog->setIntRange(0, 120);
dialog->open();
connect(dialog, &QInputDialog::intValueSelected, this, [](int value) {qDebug() << "输入的年龄:" << value;
});
- intValueSelected(int):整数输入完成时触发。
- textValueSelected(QString):文本输入完成时触发。
可以隐藏“取消”按钮,使输入框更简洁:
dialog->setOption(QInputDialog::NoButtons);