Angabe des Trennzeichen bei QSettings

Alles rund um die Programmierung mit Qt
Antworten
ksiegele
Beiträge: 3
Registriert: 6. August 2008 11:48
Wohnort: Hamburg

Angabe des Trennzeichen bei QSettings

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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
Antworten