将QList <t>存储在QVariant中并流式传输到QDataStream?</t>

时间:2009-09-17 15:14:56

标签: c++ qt serialization

以下是演示代码:

QList<Custom> L;
QVariant v(QVariant::fromValue(l));
QDataStream d;
d << v;

问题似乎是d不知道如何流v,因为v不知道如何做一个元数据类型保存在L.我已经注册了Custom和L作为元类型并且我也注册了他们的IO流,但L没有元对象,我认为这是问题所在。

我可以以某种方式解决这个问题吗?

稍后编辑:
在调试QMetaType代码之后,我发现在调用qRegisterMetaTypeStreamOperators<Type>("TypeString")时,“TypeString”必须是“Type”,而不仅仅是任何字符串。这在文档中提到过,但并不是很清楚。 QtCentre链接也提到了这一点。我决定接受Kaleb Pederson的回答,因为我找错了答案是我的错。 :)

1 个答案:

答案 0 :(得分:2)

对于给定类型,您需要register output operators。另请参阅similar question on QtCentre

这意味着您需要定义与documentation中定义的签名匹配的非成员输出运算符,然后调用qRegisterMetaTypeStreamOperators