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

时间:2011-06-02 05:41:47

标签: qt qjson custom-data-type

我正在使用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> >();

什么都没有用。我做错了什么?

1 个答案:

答案 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