如何注册以下数据类型以允许序列化?

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)

什么都行不通.我究竟做错了什么?

O.C*_*.C. 5

我不知道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以了解流操作符