小澤と申します。 初めて投稿します。
表題の件で、質問させて頂きます。 Qt経験はありますが、ブランクが2年あったため、感覚が掴めておりません。 申し訳ありませんが、ご教示ください。
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;
}
const QSettings::Format XmlFormat = QSettings::registerFormat("xml", & readSettingsXml, &writeSettingsXml);
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バイトのファイルぐらいはあってもおかしくない気がするのですが、
なぜ書かれないのでしょうか?
以上、よろしくお願いします。