4

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

没有任何工作。我究竟做错了什么?

4

1 回答 1

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

于 2011-06-02T07:09:06.097 回答