我正在使用QJson来序列化QObject
派生类。我可以毫无问题地序列化类本身,但是当涉及到其中一个成员时,我遇到了一些麻烦。
该类名为CProject
,它包含一个属性files
,定义为:
QList<CProjectFile> files;
序列化CProject
的实例时,我在控制台中收到一条消息:
QMetaProperty::read: Unable to handle unregistered datatype 'QList<CProjectFile>' for property 'CProject::files'
我在某处读到了我必须注册的数据类型,所以我在声明CProject
之后添加了以下内容:
Q_DECLARE_METATYPE(QList<CProjectFile>)
......当这没有做任何事情时,我补充道:
qRegisterMetaType< QList<CProjectFile> >();
什么都没有用。我做错了什么?
答案 0 :(得分:5)
我不知道QJson是如何工作的,但也许它需要流操作符。声明CProjectFile类
后,请尝试以下方法class CProjectFile
{
...
};
Q_DECLARE_METATYPE(CProjectFile)
qRegisterMetaType<CProjectFile>("CProjectFile");//Do this if you need signal/slots
qRegisterMetaTypeStreamOperators<QList<CProjectFile> >("CProjectFileList");
有关流操作符的信息,请参阅QT Doc