0

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

4

2 回答 2

1

没有内置的方法。您可以“模仿”这些类型的 QDataStream 所做的 -它已记录在案。请记住,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:……就写吧?
于 2013-09-06T22:55:20.113 回答
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 是不可能的。

于 2013-09-06T22:43:40.393 回答