Base
官方介绍
QVariant 充当 c语言里的Union 的角色。
因为,C++规定: Union里的类型 不可以有自定义的“构造/析构”,否则报错
然而,很多很多类 都不符合条件,无法放入Union里。
因此,就出现了 QVariant, 解决QObject::property()和database等问题。
源码
class QVariant{
union{
char c;
int i;
double d;
QString ;
QDate;
QList<QVariant>;
...
}data;
};
即QVariant这个union里面,有很多很多的类型,具体支持哪些类型 可以通过:QVariant::Type::xx 来查看
这么多类型,他们中 最大的sizeof是16,所以QVarient的sizeof是16
QVariant v;
v.setValue< QString >("ss");
if(v1.type() == QVariant::String){
QString s = v.toString();
}
v.setValue< QList