Frage

Ich habe eine Anwendung, die ich mit Qt 4.5.2 auf Windows zu schreiben. Ich habe einige Einstellungen in einer INI-Datei zu speichern und mit QSettings die Einstellungen zu laden und zu speichern. Ich möchte einige Kommentare in der INI-Datei haben.

Zum Beispiel:

; Meta-info to store with the file
[General]
MainWindow\size=@Size(1280 600)
MainWindow\pos=@Point(0 300)
Debugging=true

Allerdings habe ich gefunden habe, wenn ich die Einstellungen mit Datei laden

QSettings settings( "settings.ini", QSettings::IniFormat );

die Kommentare aus der Datei entfernt. Die INI-Datei wird neu geschrieben nach dem Laden durch einen Aufruf von QSettings :: sync () (dies wird automatisch durch den Konstruktor getan). Gibt es eine Möglichkeit, die Kommentare nach der Synchronisierung?

zu erhalten

Preemptive Kommentare:

  • Ich möchte INI-Dateien in Windows für zukünftige Cross-Plattform-Kompatibilität
  • Ich möchte außerhalb der Anwendung als Referenz in der Datei Meta-Informationen speichern
  • Ich betrachte die Meta-Informationen einen Abschnitt der INI-Herstellung und Verwendung der name = value Regeln, aber würde es vorziehen, die Informationen als Kommentar
  • zu halten
War es hilfreich?

Lösung

QSettings hat kein Konzept von „Speichern“. Alle Änderungen, die Sie, es zu tun gilt als endgültig, und auf die Platte geschrieben häufig und transparent.

In der Dokumentation von QSettings gibt es keine Erwähnung über Kommentare in ini-Dateien. Es macht macht einen Sinn: Schließlich kann ein Registrierungswert sein, auch. Behandeln Sie es wie eine generierte Datei:. Es ist

Hier ist mein Vorschlag:

[General]
Comment = @String(Meta-info to store with the file)
MainWindow\size=@Size(1280 600)
MainWindow\pos=@Point(0 300)
Debugging=true

Ich weiß nicht, ob es funktioniert, mit ihm spielen, um zu sehen, wie es speichert tatsächlich die Zeichenfolge. Oh, und stellen Sie sicher, entweder Sie es von Code festgelegt oder dokumentiert es richtig, um nicht versehentlich die gleiche Kennung unter Verwendung von innerhalb des Programms.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top