文章目录
前言:
一、QVariant
1、存储数据
1.1、存储Qt内置数据
QVariant var1 = 10; // 存储整数
QVariant var2 = "Hello, QVariant"; // 存储字符串
QVariant var3 = QDateTime::currentDateTime(); // 存储当前日期和时间
1.2、存储自定义数据
struct MyData {
int valueA = 100;
QString str = "HelloWorld";
};
Q_DECLARE_METATYPE(MyData)
QVariant var4;
MyData myData;
var4.setValue(myData); // 存储自定义类型
2、获取数据
int intValue = var1.toInt(); // 将QVariant转换为int类型
QString strValue = var2.toString(); // 将QVariant转换为QString类型
QDateTime dateTime = var3.toDateTime(); // 将QVariant转换为QDateTime类型
MyData tempData = var4.value<MyData>(); // 将QVariant转换为MyData类型
// 存储
template<typename T>
inline void QVariant::setValue(const T &value);
// 获取
template<typename T>
inline T QVariant::value() const
{ return qvariant_cast<T>(*this); }
3、判断数据类型
// 获取存储数据的类型
Type QVariant::type() const;
bool QVariant::canConvert(int targetTypeId) const;
// 判断是否能转换成指定类型
template<typename T>
bool QVariant::canConvert() const
{ return canConvert(qMetaTypeId<T>()); }
if (var1.type() == QVariant::Int) {
qDebug() << "var1 is an integer";
}
if (var2.canConvert<QString>()) {
qDebug() << "var2 can be converted to QString";
}
4、清空数据
var1.clear(); // 清空var1中存储的数据