我正在使用 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> >();
没有任何工作。我究竟做错了什么?
最佳答案
我不知道 QJson 是如何工作的,但也许它需要流运算符。在声明 CProjectFile 类后尝试如下
class CProjectFile
{
...
};
Q_DECLARE_METATYPE(CProjectFile)
qRegisterMetaType<CProjectFile>("CProjectFile");//Do this if you need signal/slots
qRegisterMetaTypeStreamOperators<QList<CProjectFile> >("CProjectFileList");
另见 QT Doc对于流操作符
关于qt - 如何注册以下数据类型以允许序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6210877/