以下是演示代码:
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的回答,因为我找错了答案是我的错。 :)
答案 0 :(得分:2)
对于给定类型,您需要register output operators。另请参阅similar question on QtCentre。
这意味着您需要定义与documentation中定义的签名匹配的非成员输出运算符,然后调用qRegisterMetaTypeStreamOperators
。