【问题标题】:Store QList<T> in QVariant and stream to QDataStream?将 QList<T> 存储在 QVariant 中并流式传输到 QDataStream?
【发布时间】:2009-09-17 15:14:56
【问题描述】:

这是演示代码:

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

问题似乎是 d 不知道如何流式传输 v,因为 v 不知道如何在 L 上进行元类型保存。我已将 Custom 和 L 注册为元类型,并且我还注册了它们的 IO流,但 L 没有元对象,我认为这就是问题所在。

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

稍后编辑:
调试QMetaType代码后发现,调用qRegisterMetaTypeStreamOperators&lt;Type&gt;("TypeString")时,“TypeString”必须是“Type”,而不是随便什么字符串。文档中提到了这一点,但并不是很清楚。 QtCentre 链接也提到了这一点。我决定接受 Kaleb Pederson 的回答,因为我很难找到答案是我的错。 :)

【问题讨论】:

    标签: c++ qt serialization


    【解决方案1】:

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

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

    【讨论】:

    • 密钥在您的 QtCentre 链接中:类型名称必须与 qRegisterMetaTypeStreamOperators 中的字符串匹配!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多