自定义数据结构放入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");
Logo

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

更多推荐