Nat*_*man 4 qt custom-data-type qjson
我正在使用QJson序列化一个QObject衍生类.我能够毫无问题地序列化类本身,但是当涉及到其中一个成员时,我遇到了一些麻烦.
该类已命名CProject,它包含一个属性files,定义为:
QList<CProjectFile> files;
Run Code Online (Sandbox Code Playgroud)
序列化实例时CProject,我在控制台中收到一条消息:
QMetaProperty::read: Unable to handle unregistered datatype 'QList<CProjectFile>' for property 'CProject::files'
我在某处读到了我必须注册的数据类型,所以我在声明之后添加了以下内容CProject:
Q_DECLARE_METATYPE(QList<CProjectFile>)
Run Code Online (Sandbox Code Playgroud)
......当那无所作为时,我补充道:
qRegisterMetaType< QList<CProjectFile> >();
Run Code Online (Sandbox Code Playgroud)
什么都行不通.我究竟做错了什么?
我不知道QJson是如何工作的,但也许它需要流操作员.在声明CProjectFile类之后尝试如下
class CProjectFile
{
...
};
Q_DECLARE_METATYPE(CProjectFile)
qRegisterMetaType<CProjectFile>("CProjectFile");//Do this if you need signal/slots
qRegisterMetaTypeStreamOperators<QList<CProjectFile> >("CProjectFileList");
Run Code Online (Sandbox Code Playgroud)
另请参阅QT Doc以了解流操作符