说明:之所以自定义的结构体跟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.youkuaiyun.com/postedit/88699038
注:本来想将结构体变成QVariant之后,传递到qml中使用,发现不可行。
转自:
博客主要介绍了在Qt中自定义结构体与QVariant之间转换的原因,是为实现变量传递,适用于qtwidget。还提及QVariant与list的转换,强调任何Qt类型转QVariant需查看帮助文档确定是否为基本类型,此外提到信号槽可直接用结构体传递,以及将结构体转QVariant用于qml不可行。
1297

被折叠的 条评论
为什么被折叠?



