qt QInputDialog详解
1、概述
QInputDialog 是 Qt 框架中的一个对话框类,用于获取用户输入。它提供了简单的文本输入、整数输入、浮点数输入以及列表选择等功能。QInputDialog 继承自 QDialog,是一个模态对话框,通常用于请求用户输入单个值或进行简单的选择。
2、重要方法
- QInputDialog(QWidget *parent = nullptr): 构造函数,创建一个新的 QInputDialog 对象。
parent
是可选的父窗口参数。 - static QString getText(QWidget *parent = nullptr, const QString &title = QString(), const QString &label = QString(), QLineEdit::EchoMode mode = QLineEdit::Normal, const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()): 静态函数,显示一个文本输入对话框并返回用户输入的文本。
title
是对话框的标题,label
是输入字段旁边的标签,mode
是输入字段的回显模式(如密码模式),text
是默认输入的文本,ok
是一个指向布尔值的指针,用于指示用户是否点击了“确定”,flags
是对话框的窗口标志。 - static int getInt(QWidget *parent = nullptr, const QString &title = QString(), const QString &label = QString(), int value = 0, int minValue = -2147483647, int maxValue = 2147483647, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()): 静态函数,显示一个整数输入对话框并返回用户输入的整数。参数与
getText
类似,但增加了value
(默认值)、minValue
(最小值)和maxValue
(最大值)。 - static double getDouble(QWidget *parent = nullptr, const QString &title = QString(), const QString &label = QString(), double value = 0.0, double minValue = -2147483647.0, double maxValue = 2147483647.0, int decimals = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()): 静态函数,显示一个浮点数输入对话框并返回用户输入的浮点数。参数与
getInt
类似,但value
、minValue
和maxValue
是双精度浮点数,decimals
指定了小数点后的位数。 - static QListWidgetItem getItem(QWidget *parent = nullptr, const QString &title = QString(), const QString &label = QString(), const QStringList &items = QStringList(), int current = 0, bool editable = true, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()): 静态函数,显示一个列表选择对话框并返回用户选择的列表项。
items
是可选项的列表,current
是默认选择的项。 - void setInputMode(QInputDialog::InputMode mode): 设置输入对话框的模式(文本、整数、浮点数或列表)。
- void setComboBoxItems(const QStringList &items): 当输入模式为列表时,设置列表项。
3、重要输入模式
以下是QInputDialog类中一些常见的输入模式及其简要介绍:
- QLineEdit::Normal:正常文本输入模式。
- QLineEdit::NoEcho:无回显模式。
- QLineEdit::Password:密码输入模式。
- QLineEdit::PasswordEcho0nEdit:编辑时显示密码输入模式。
#include <QApplication>
#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QVBoxLayout>
#include <QInputDialog>
#include <QDebug>
class InputDialogDemo : public QWidget {
Q_OBJECT
public:
InputDialogDemo(QWidget *parent = nullptr) : QWidget(parent) {
QVBoxLayout *layout = new QVBoxLayout(this);
QLabel *label = new QLabel("请输入一些文本:", this);
layout->addWidget(label);
QPushButton *button = new QPushButton("打开输入对话框", this);
layout->addWidget(button);
connect(button, &QPushButton::clicked, this, &InputDialogDemo::onInputButtonClicked);
this->labelToUpdate = new QLabel("等待输入...", this);
layout->addWidget(this->labelToUpdate);
this->setLayout(layout);
this->setWindowTitle("输入对话框例子");
}
private slots:
void onInputButtonClicked() {
bool ok;
QString text = QInputDialog::getText(this, "输入对话框", "请输入文本:", QLineEdit::Normal, "", &ok);
if (ok && !text.isEmpty()) {
this->labelToUpdate->setText("你输入了: " + text);
qDebug() << "用户输入的文本:" << text;
} else {
this->labelToUpdate->setText("未输入或取消");
}
}
private:
QLabel *labelToUpdate;
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
InputDialogDemo demo;
demo.show();
return app.exec();
}
觉得有帮助的话,打赏一下呗。。