如何为QXmlStreamWriter / Reader序列化QColor,QSize,QPoint

时间:2013-09-06 20:17:43

标签: c++ xml qt serialization qt4

我正在保存一些项目特征,我想将它们序列化为XML以写入文件和/或保存在数据库中。但是,我没有看到任何明显的序列化QColorQSizeQPoint的方法。将QColorQSizeQPoint序列化到QString以便写入XML的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

没有内置的方式。您可以“模仿”这些类型的QDataStream所做的事情 - it's documented。请记住,QDataStream是二进制格式,而XML则不是。所以,例如:

  • QColor:序列化颜色规范(作为字符串?),然后是组件(根据该规范):

    <color spec="cymk"><cyan>0.024451</cyan><yellow>...</color>
    
  • QSize:序列化宽度和高度

    <size><width>2421</width><height>624</height></size>
    

    或者

    <size width="2421" height="624" />
    
  • QPoint:序列化X / Y坐标

  • QString:...只是写出来?

答案 1 :(得分:0)

QBuffer buffer;
buffer.open(QBuffer::ReadWrite);
QDataStream out(&buffer);
out << "your QColor, QSize, or QPoint";

buffer.buffer()然后返回带有序列化QColor,QSize或QPoint的QByteArray。 这应该适合写入您的xml文件。为了安全起见,您应该将QByteArray的内容转换为base64,或者确保它只包含xml允许的字符。

是的,我确信这不是你所希望的,但据我所知,直接序列化为QXmlStreamWriter是不可能的。