我正在保存一些项目特征,并且我想将它们序列化为 XML 以写入文件和/或保存在数据库中。但是,我没有看到任何明显的方法来序列化QColor
,QSize
和QPoint
. QColor
序列化 ,QSize
和QPoint
aQString
以写入 XML的正确方法是什么?
问问题
2109 次
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 回答