Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Japanese
  4. QSettingsのxml形式出力について

QSettingsのxml形式出力について

Scheduled Pinned Locked Moved Japanese
2 Posts 1 Posters 2.7k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Z Offline
    Z Offline
    zattu
    wrote on 10 Dec 2014, 10:27 last edited by
    #1

    表題の件で、質問させて頂きます。
    Qt経験はありますが、ブランクが2年あったため、感覚が掴めておりません。
    申し訳ありませんが、ご教示ください。
    ※ubuntu 14.04を使用しています。

    @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;
    

    }

    void main()
    {
    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バイトのファイルぐらいはあってもおかしくない気がするのですが、
    なぜ書かれないのでしょうか?

    1 Reply Last reply
    0
    • Z Offline
      Z Offline
      zattu
      wrote on 11 Dec 2014, 06:15 last edited by
      #2

      自己解決しました。
      unixの場合、/home/[user name]/.config/organization/application.xmlでした。

      1 Reply Last reply
      0

      1/2

      10 Dec 2014, 10:27

      • Login

      • Login or register to search.
      1 out of 2
      • First post
        1/2
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved