0
点赞
收藏
分享

微信扫一扫

Qt 实战(3)数据类型 | 3.2、QVariant

一只1994 2024-07-28 阅读 28

文章目录


前言:

一、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中存储的数据

5、总结

举报

相关推荐

0 条评论