目的
主要是为了熟悉QVariant与Qt 通用数据类型或者自定义数据类型进行转换. QVariant类充当最常见Qt数据类型的联合。 因为c++禁止union包含具有非默认构造函数或析构函数的类型,所以大多数有趣的Qt类都不能在union中使用。如果没有QVariant,这将成为QObject::property()和数据库工作等的问题。
Qt data type
1: 第一种转换
QIcon
ICON("xxx.png");
QVariant variant
= ICON
;
QIcon icon
= variant
.value
<QIcon
>();
2: 第二种转换
int a
= 10;
QVariant
variant(a
);
int c
= variant
.value
<int>();
int d
= variant
.toInt();
custom type
使用一个自定义类型
, 需要在类声明的后面加上
:Q_DECLARE_METATYPE(),
struct MyClass
{
QString name
;
}
Q_DECLARE_METATYPE(MyClass
).
MyClass
myClass1;
QVariant variant
= QVairant
::fromValue(myClass1
);
variant
.canConvert
<MyClass
>();
MyClass
myClass2 = v2
.value
<MyClass
>();
如果是指针
, 转换如下
MyClass
* myClass1
;
QVariant variant
= QVariant
::fromValue((void*)myClass1
);
MyClass
* myClass2
;= (MyClass
*)variant
.value
<void*>();
还有更多组合关于QVariant
QVariantMap
= QMap
<QStrint
, QVariant
>
QVariantList
= QList
<Variant
>
QVariantHash
= QHash
<QString
, QVariant
>
转载请注明原文地址: https://lol.8miu.com/read-8117.html