我正在保存一些项目特征,我想将它们序列化为XML以写入文件和/或保存在数据库中。但是,我没有看到任何明显的序列化QColor
,QSize
和QPoint
的方法。将QColor
,QSize
和QPoint
序列化到QString
以便写入XML的正确方法是什么?
答案 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坐标
答案 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是不可能的。