Seite 1 von 1

Angabe des Trennzeichen bei QSettings

Verfasst: 14. August 2009 14:59
von ksiegele
Hallo,

ich habe eine Frage zur Klasse QSettings.

Die benutzerdefinierten Einstellungen für unser Programm speichern wir in einer ini-Datei. Mit der Klasse QSettings lese ich mit folgenden Code die Angaben aus der ini-Datei.

QSettings* pqSettings = new QSettings(qsFilename, QSettings::IniFormat);
QVariant qvValue = _pqSettings->value(qsPath);

Wenn ich zum Beispiel eine Zeile wie
Fenster=30,40,20,23
aus der ini-Datei lese, bekomme ich einen QVariant vom Typ QStringList mit den 4 Elementen 30, 40, 20 und 23 zurückgeliefert. Das ist genau das, was ich will. Sind die Einträge aber durch das Trennzeichen Semicolon getrennt, ist das Ergebnis ein QVariant vom Type QString und enthält nur die 30.

Leider habe ich keine Möglichkeit gefunden, wie ich festlegen kann, welches Trennzeichen beim Lesen verwendet wird. Hat jemand eine Idee? Ich arbeite unter Linux, verwende die Qt 4.5.1 und bin für jeden Tip dankbar.

Viele Grüße
Kai

Verfasst: 14. August 2009 15:08
von franzf
Dass das als QStringList aufgefasst wird ist eher Zufall ;)
Denn QSettings ist nicht nur zum Lesen sondern eben auch zum Schreiben da. Und das Lesen setzt eigentlich das Schreiben voraus. Denn speziell so Sachen wie QPoint usw. werden in nem ganz eigenen Format gespeichert, geschweige denn Binäre Sachen wie QPixmap usw. Und QStringList wird eben als Kommaseparierte Liste abgespeichert.

Deshalb solltest du entweder die ini auch mit QSettings schreiben, oder eben deine spezielle Syntax selber umwandeln. Sprich wenn in der ini die Werte einer QStringList mit Semikolon getrennt sind, und QSettings das als einzelnen String auffasst, musst du danach schon selber Hand anlegen und den String in ne StringList umwandeln (siehe QString::split()).

Grüße
Franz