Qt: QSettings unter Windows mit INI-Dateien und Kommentare
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 erhaltenPreemptive 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
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.