我想将QList<QList<MyClass>>
保存为QVariant,但我总是得到错误QVariant::save: unable to save type 'QList<QList<MyClass*> >' (type id: 1042)
。我已经为MyClass实现了流操作符,它运行正常。
QDataStream& operator<<(QDataStream& out, const MyClass& item)
{
//Properties to write
return out;
}
QDataStream& operator>>(QDataStream& in, MyClass& item)
{
//Properties to read
return in;
}
我还注册了类型
Q_DECLARE_METATYPE(MyClass*)
Q_DECLARE_METATYPE(QList<MyClass*>)
Q_DECLARE_METATYPE(QList<QList<MyClass*>>)
和
qRegisterMetaType<QList<MyClass*>>("QList<MyClass*>");
qRegisterMetaType<QList<QList<MyClass*>>>("QList<QList<MyClass*>>");
qRegisterMetaType<MyClass*>("MyClass*");
如果我只传输一个MyClass对象,一切都很好。我可以将它保存为QVariant,流式传输并将其转换回MyClass。我认为我不必为QList<MyClass>
或QList<QList<MyClass>>
实现运算符,因为在QList中传输模板类已经由Qt实现。那么这件事情是什么?