自定义数据结构的QVariant序列化 ASSERT failure in QVariant::save: “invalid type to save“
QVariant序列化异常
·
自定义数据结构放入QVariant,在序列化时抛出异常
ASSERT failure in QVariant::save: “invalid type to save”
自定义数据结构如struct MyData,除了要在结构体后面加
struct MyData
{
...
}
Q_DECLARE_METATYPE(MyData)
如果需要用到流的输入输出,如QDataStream operator<< 和operator>>,要重写操作符,如下
QDataStream& operator<<(QDataStream& out, const MyData& data);
QDataStream& operator>>(QDataStream& in, MyData& data);
QDataStream& operator<<(QDataStream& out, const MyData& data) {
out << ...
return out;
}
QDataStream& operator>>(QDataStream& in, MyData& data) {
in >> ...
return in;
}
此外,还要通过qRegisterMetaTypeStreamOperators
注册流操作符,可以放在main函数中
qRegisterMetaTypeStreamOperators<MyData>("MyData");

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)