文章目录
1、简述
QInputDialog类提供了一个简单的便捷对话框,可以从用户那里获取用户录入的单个值。当前Qt提供了五个静态接口函数用于获取常用的数据类型参数:getText(…),getMultiLineText(…),getInt(…),getDouble(…)和getItem(…)。下面我们将会对着三个函数依次进行介绍。
头文件: #include <QInputDialog>
qmake:QT += widgets
备注: 文章中举例代码中涉及到了多语言翻译,如果存在疑问,可以翻看《Qt 编程 —— 如何实现多语言翻译功能(含源码)》这篇文章。
2、接口介绍
//double类型的接口
double getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags())
//int类型的接口
int getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags())
//单选框获取选中的某一列
QString getItem(QWidget *parent, const QString &title, const QString &label, const QStringList &items, int current = 0, bool editable = true, bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
//多文本输入框
QString getMultiLineText(QWidget *parent, const QString &title, const QString &label, const QString &text = QString(), bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
//单文本输入框
QString getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString &text = QString(), bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
2.1、浮点类型数据输入框 getDouble(…)
参数介绍:
double getDouble(
QWidget *parent, //指向父对象的指针
const QString &title, //窗口标题
const QString &label, //窗口提示文本信息
double value = 0, //默认值
double min = -2147483647, //最小值范围
double max = 2147483647, //最大值范围
int decimals = 1, //步长(单次操作,值递增幅度)
bool *ok = Q_NULLPTR, //用户是否点击确认按钮(确认:OK, 取消:Cancel)
Qt::WindowFlags flags = Qt::WindowFlags())//其他窗口标志,一般直接使用默认值
返回值:double 类型
如果点击“OK”按钮:返回当前输入框的值。
如果点击“Cancel”按钮:返回当设置的默认值。
举例:
//获取输入整数
bool bRet = false;
//qApp->translate(c_strQtGuiApplication, c_strInputPaswd) 多文本翻译
double dbRet = QInputDialog::getDouble(this, qApp->translate(c_strQtGuiApplication, c_strInputPaswd),
qApp->translate(c_strQtGuiApplication, c_strPaswd), 0.0, 0.0, 100.0, 1, &bRet);
if (bRet)
{
qDebug() << "press ok iRet = " << dbRet;
}
else
{
qDebug() << "press Cancel iRet = " << dbRet;
}
演示效果:
2.2、整形数据类型输入框 getInt(…)
int getInt(
QWidget *parent, //指向父对象的指针
const QString &title, //窗口标题
const QString &label, //窗口提示文本信息
int value = 0, //默认值
int min = -2147483647, //最小值范围
int max = 2147483647, //最大值范围
int step = 1, //步长(单次操作,值递增幅度)
bool *ok = Q_NULLPTR, //用户是否点击确认按钮(确认:OK, 取消:Cancel)
Qt::WindowFlags flags = Qt::WindowFlags())//其他窗口标志,一般直接使用默
返回值:double 类型
如果点击“OK”按钮:返回当前输入框的值。
如果点击“Cancel”按钮:返回当设置的默认值。
举例:
bool bRet = false;
//获取输入整数
double dbRet = QInputDialog::getDouble(this, qApp->translate(c_strQtGuiApplication, c_strInputPaswd),
qApp->translate(c_strQtGuiApplication, c_strPaswd), 0.0, 0.0, 100.0, 1, &bRet);
if (bRet)
{
qDebug() << "press ok iRet = " << dbRet;
}
else
{
qDebug() << "press Cancel iRet = " << dbRet;
}
演示效果:
2.3、下拉选择框 getItem(…)
//单选框获取选中的某一列
QString getItem(
QWidget *parent, //指向父对象的指针
const QString &title, //窗口标题
const QString &label, //窗口提示文本信息
const QStringList &items, //选项列表
int current = 0, //默认选项值的编号
bool editable = true, //是否可编辑
bool *ok = Q_NULLPTR, //用户是否点击确认按钮(确认:OK, 取消:Cancel)
Qt::WindowFlags flags = Qt::WindowFlags(), //其他窗口标志
Qt::InputMethodHints inputMethodHints = Qt::ImhNone) //列表框风格
返回值:QString 类型
如果点击“OK”按钮:返回当前单选框选中的内容。
如果点击“Cancel”按钮:返回当设置的默认值。
举例:
bool bRet = false;
//获取列表选择数据
QStringList items;
items << tr("Spring") << tr("Summer") << tr("Fall") << tr("Winter");
QString item = QInputDialog::getItem(this, qApp->translate(c_strQtGuiApplication, c_strInputPaswd),
qApp->translate(c_strQtGuiApplication, c_strPaswd), items, 0, true, &bRet, Qt::WindowFlags(), Qt::ImhHiddenText);
if (bRet && !item.isEmpty())
{
qDebug() << "press ok item = " << item;
}
else
{
qDebug() << "press Cancel item = " << item;
}
演示效果:
2.4、富文本编辑框 getMultiLineText(…)
//多文本输入框
QString getMultiLineText(
QWidget *parent,
const QString &title,
const QString &label,
const QString &text = QString(), //设置默认文本
bool *ok = Q_NULLPTR,
Qt::WindowFlags flags = Qt::WindowFlags(),
Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
返回值:QString 类型
如果点击“OK”按钮:返回当前富文本编辑框中的内容。
如果点击“Cancel”按钮:返回字符串。
举例:
bool bRet = false;
//富文本输入框
QString text = QInputDialog::getMultiLineText(this, qApp->translate(c_strQtGuiApplication, c_strInputPaswd),
qApp->translate(c_strQtGuiApplication, c_strPaswd), "hello\nworld\n123", &bRet);
if (bRet && !text.isEmpty())
{
qDebug() << "press ok text = " << text;
}
else
{
qDebug() << "press Cancel text = " << text;
}
演示效果:
2.5、单文本编辑框 getText(…)
//单文本输入框
QString getText(
QWidget *parent,
const QString &title,
const QString &label,
QLineEdit::EchoMode mode = QLineEdit::Normal, //文本框样式
const QString &text = QString(), //设置默认文本
bool *ok = Q_NULLPTR,
Qt::WindowFlags flags = Qt::WindowFlags(),
Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
返回值:QString 类型
如果点击“OK”按钮:返回当前单文本编辑框中的内容。
如果点击“Cancel”按钮:返回空字符串。
举例:
bool bRet = false;
//单文本输入框
QString text = QInputDialog::getText(this, qApp->translate(c_strQtGuiApplication, c_strInputPaswd),
qApp->translate(c_strQtGuiApplication, c_strPaswd), QLineEdit::Normal, "123456", &bRet);
if (bRet && !text.isEmpty())
{
qDebug() << "press ok text = " << text;
}
else
{
qDebug() << "press Cancel text = " << text;
}
演示效果: