来自QList的QVariant <qlist <myclass>&gt;

时间:2018-02-08 14:48:53

标签: c++ qt c++11 qvariant

我想将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实现。那么这件事情是什么?

0 个答案:

没有答案