将QPainterPath写入XML

时间:2017-04-12 13:19:20

标签: c++ xml qt

我有一个QPainterPath被绘制到我的QGraphicsScene中,我将它们绘制到QList中时存储路径的点。

我的问题是我现在如何将这些点保存到xml(我认为这样做最好),因为它们被绘制了?我的目标是当应用程序关闭时,我读取了xml,并立即将路径重新绘制到场景中。

这是我为写作设置的方法,每次我在路径上写一个新点时都会调用它。

void writePathToFile(QList pathPoints){
    QXmlStreamWriter xml;

    QString filename = "../XML/path.xml";
    QFile file(filename);
    if (!file.open(QFile::WriteOnly | QFile::Text))
        qDebug() << "Error saving XML file.";
    xml.setDevice(&file);

    xml.setAutoFormatting(true);
    xml.writeStartDocument();

    xml.writeStartElement("path");
    //  --> no clue what to dump here: xml.writeAttribute("points", ? );
    xml.writeEndElement();

    xml.writeEndDocument();
}

或者这可能不是解决这个问题的最好方法吗?

我想我可以处理阅读和重新绘制路径,但第一部分是欺骗我。

1 个答案:

答案 0 :(得分:3)

您可以使用二进制文件:

QPainterPath path;
// do sth
{
  QFile file("file.dat");
  file.open(QIODevice::WriteOnly);
  QDataStream out(&file);   // we will serialize the data into the file
  out << path;   // serialize a path, fortunately there is apriopriate functionality
}

反序列化类似:

QPainterPath path;
{
  QFile file("file.dat");
  file.open(QIODevice::ReadOnly);
  QDataStream in(&file);   // we will deserialize the data from the file
  in >> path;
}
//do sth