bool writeSettingsXml(QIODevice &device, const QMap<QString, QVariant> &map)
{
QXmlStreamWriter xmlWriter(&device);
xmlWriter.setAutoFormatting(true);
xmlWriter.writeStartDocument();
xmlWriter.writeStartElement("Settings");
QStringList prev_elements;
QSettings::SettingsMap::ConstIterator map_i;
// Alle Elemente der Map durchlaufen
for (map_i = map.begin(); map_i != map.end(); map_i++) {
QStringList elements = map_i.key().split("/");
int x = 0;
// Zu schließende Elemente ermitteln
while(x < prev_elements.size() && elements.at(x) == prev_elements.at(x)) {
x++;
}
// Elemente schließen
for(int i = prev_elements.size() - 1; i >= x; i--) {
xmlWriter.writeEndElement();
}
// Elemente öffnen
for (int i = x; i < elements.size(); i++) {
xmlWriter.writeStartElement(elements.at(i));
}
// Wert eintragen
xmlWriter.writeCharacters(map_i.value().toString());
prev_elements = elements;
}
// Noch offene Elemente schließen
for(int i = 0; i < prev_elements.size(); i++) {
xmlWriter.writeEndElement();
}
xmlWriter.writeEndElement();
xmlWriter.writeEndDocument();
return true;
}
QSettings xml(XmlFormat, QSettings::UserScope, "organization", "application");
xml.setValue("Place/Latitude", ui->lineLatitude->text().toFloat());
xml.setValue("Place/Latitude", ui->lineLongitude->text().toFloat());
上記のように処理をしたところ、writeSettingsXml関数内はXML形式に正常出力させているようですが、
実際のファイルが見当たりません。
正常に書けなかった場合でも、0バイトのファイルぐらいはあってもおかしくない気がするのですが、
なぜ書かれないのでしょうか?
以上、よろしくお願いします。