我在尝试在磁盘上序列化我的对象时遇到问题。这是一个简化的场景:
我让ObjectA提供自己的序列化运算符。他们工作,因为我可以保存/加载数据到文件。 接下来,我将包含ObjectA的ObjectB作为数据成员。试图保存ObjectB我遇到了运行时错误:
QVariant :: save:无法保存类型279。
我正在将此代码用于流操作符:
QDataStream & operator<<( QDataStream & dataStream, const ObjectA & objectA )
{
for(int i=0; i< objectA.metaObject()->propertyCount(); ++i) {
if(objectA.metaObject()->property(i).isStored(&objectA)) {
dataStream << objectA.metaObject()->property(i).read(&objectA);
}
}
return dataStream;
}
QDataStream & operator>>(QDataStream & dataStream, ObjectA & objectA) {
QVariant var;
for(int i=0; i < objectA.metaObject()->propertyCount(); ++i) {
if(objectA.metaObject()->property(i).isStored(&objectA)) {
dataStream >> var;
objectA.metaObject()->property(i).write(&objectA, var);
}
}
return dataStream;
}
(只需将A替换为B,用于ObjectB运算符)
我认为错误是在ObjectB序列化实现中,但我不知道如何继续。
答案 0 :(得分:0)
您的类型必须class MyType {
...
};
Q_REGISTER_METATYPE(MyType);
int main(int argc, char ** argv) {
...
qRegisterMetaTypeStreamOperators<MyType>();
...
}
。 E.g:
clk_process :process
begin
clk <= '0';
wait for clk_period/2;
clk <= '1';
wait for clk_period/2;
end process;