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