2011-06-02 78 views
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

我不知道QJson是如何工作的,但也許它需要流操作員。 CProjectFile類

class CProjectFile 
{ 
    ... 
}; 

    Q_DECLARE_METATYPE(CProjectFile) 

    qRegisterMetaType<CProjectFile>("CProjectFile");//Do this if you need signal/slots 

    qRegisterMetaTypeStreamOperators<QList<CProjectFile> >("CProjectFileList"); 

參見QT Doc的聲明中流作業後嘗試如下

相關問題