2009-11-11 16 views
6

Ho un'applicazione che sto scrivendo usando Qt 4.5.2 su Windows. Sto memorizzando alcune impostazioni in un file INI e usando QSettings per caricare e salvare le impostazioni. Mi piacerebbe avere alcuni commenti nel file INI.Qt: QSettings su Windows con file INI e commenti

Ad esempio:

; Meta-info to store with the file 
[General] 
MainWindow\[email protected](1280 600) 
MainWindow\[email protected](0 300) 
Debugging=true 

Tuttavia, ho trovato quando carico il file di impostazioni con

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

i commenti vengono eliminati del file. Il file INI viene riscritto dopo essere stato caricato da una chiamata a QSettings :: sync() (operazione eseguita automaticamente dal costruttore). C'è un modo per preservare i commenti dopo la sincronizzazione?

commenti Preemptive:

  • voglio i file INI di Windows per la compatibilità futura multipiattaforma
  • voglio archiviare meta-informazioni nel file di riferimento al di fuori dell'applicazione
  • Sto considerando rendendo la meta-informazioni una sezione della INI e utilizzando i name = valore regole, ma preferisce mantenere le informazioni come un commento

risposta

4

QSettings non ha il concetto di "salva". Tutte le modifiche che fai sono considerate definitive e scritte su disco spesso e in modo trasparente.

Nella documentazione di QSettings, non si fa menzione dei commenti nei file ini. Ha un senso: dopotutto, può anche essere un valore di registro. Tratta come un file generato: è uno.

Ecco il mio suggerimento:

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

Non so se funziona, giocare con essa per vedere come in realtà memorizza la stringa. Oh, e assicurati di impostarlo dal codice o di documentarlo correttamente, per evitare di utilizzare accidentalmente lo stesso identificativo all'interno del programma.

+0

Riga chiave: "Tratta come un file generato: è uno." Penso che questo dica tutto. Se voglio fare cose non-Qt con il file, allora non è un vero file di impostazioni Qt. – dwj