说明:之所以自定义的结构体跟QVariant之间进行转换主要是因为qt中变量的传递以及使用主要是以QVariant来进行的,统购转换可以实现变量传递,传递完成后再转成结构体,适用于qtwidget。
(1)结构体跟QVariant之间的转换
struct tytemp
{
unsigned int target;
unsigned int current;
};
Q_DECLARE_METATYPE(tytemp)
/*将结构体变成QVariant*/
QVariant temp1;
tytemp info;
info.target = 90;
info.current = 100;
temp1 = QVariant::fromValue(info);
/*将QVariant变成结构体*/
tytemp tempinfo= temp1.value<tytemp>()
(2)QVariant跟list之间的转换
任何的qt的类型要转成QVariant都需要先看下qt的帮助文档,查看该qt类型是否是一个基本的类型。例如
QVariantList--实际上就是--》QList<QVariant>
QVariantMap--实际上就是--》QMap<QString, QVariant>
将一个QList转成一个QVariant类型:
Qlist<QVariant> list;
list<<QVariant::fromValue(90)<<QVariant::fromValue(89)<<QVariant::fromValue(67);
QVariant temp1;
temp1 = QVariant::fromValue(list);
信号槽之间传递也可直接使用结构体:
https://mp.csdn.net/postedit/88699038
注:本来想将结构体变成QVariant之后,传递到qml中使用,发现不可行。
转自: