帮我写一个qt c++函数,读取QLineEdit内的数字字符串并判断是int还是float或者是bool。并且函数返回对应的结果
时间: 2024-03-10 12:47:06 浏览: 117
基于QT+C++开发的带有标签、下划线的Material Design风格输入框QLineEdit+源码
好的,以下是一个基本的实现:
```cpp
#include <QLineEdit>
enum class DataType {
Int,
Float,
Bool,
Unknown
};
DataType getDataType(const QString& str) {
bool ok;
int intVal = str.toInt(&ok);
if (ok) {
return DataType::Int;
}
float floatVal = str.toFloat(&ok);
if (ok) {
return DataType::Float;
}
if (str.compare("true", Qt::CaseInsensitive) == 0
|| str.compare("false", Qt::CaseInsensitive) == 0) {
return DataType::Bool;
}
return DataType::Unknown;
}
QVariant getValue(const QLineEdit* lineEdit) {
QString str = lineEdit->text();
DataType type = getDataType(str);
switch (type) {
case DataType::Int:
return QVariant(str.toInt());
case DataType::Float:
return QVariant(str.toFloat());
case DataType::Bool:
return QVariant(str.toLower() == "true");
default:
return QVariant();
}
}
```
这个函数接受一个 `QLineEdit` 指针作为参数,并返回一个 `QVariant` 对象,包含解析后的数值。你可以在需要的地方使用 `getValue` 函数来获取 `QLineEdit` 内部的数值。
阅读全文