Seite 1 von 1

[gelöst] QSettings

Verfasst: 25. August 2005 14:37
von stippy
Hallo zusammen,

ich verwende gerade QSettings und habe damit folgendes Problem.

Wenn ich in meinen Funktionen schreiben und lesen jeweils ein Objekt vom Typ QSettings anlege funktioniert das Speichern der Einstellungen korrekt.
Lege ich nun jedoch eine Membervariable an die also für beide Funktionen gehen müßte werden die Einstellungen nicht gespeichert.

Kann mir jemand weiter helfen?

Gruss, Dirk

Verfasst: 25. August 2005 14:43
von stippy
Habe mein Programm eben nochmal umgeschrieben.

Das Problem tritt nur auf, wenn ich einen Zeiger auf QSettings als Member deklariere und dann ein Objekt mit new erzeuge.

Komisch echt! :-)

Verfasst: 25. August 2005 15:50
von FlorianBecker
Wer hat dir denn gesagt, das du QSettings als Pointer benutzen sollst?

Ich sage dir, du solltest es nicht tun.

Verfasst: 25. August 2005 15:54
von stippy
Warum nicht?

Was kann es für einen Grund geben der dagegen spricht?

Verfasst: 25. August 2005 16:03
von FlorianBecker
Ok, also wenn du mir so kommst. Was gibt es für einen Grund keinen Pointer zu nehmen, wie es eben auch in den Beispielen der Dokumentation ist?

Trolltech denkt sich bei den Beispielen schon was. Außerdem sind Pointer immer auch ein großes Risiko, was nicht sein muß bei eben QSettings.

Verfasst: 25. August 2005 16:21
von stippy
Mir ist das schon aufgefallen, dass bei den Beispielen keine Pointer verwendet werden.

Es ist halt nur so, dass bei mir fast alle Membervariablen Pointer sind. Beim ersten Implementieren hab ichs halt so umgesetzt und es hat nicht funktioniert.

Wenn Trolltech das mit Absicht so macht, dann müßte in der Doku stehen, dass es Probleme mit Pointern gibt.

Verfasst: 25. August 2005 16:27
von FlorianBecker
Mh, also es gibt bei der Qt Programmierung gewisse Regeln, die jetzt nicht unbedingt explizit festgelegt sind.

Außer Widgets erstmal generell nichts als Pointer.

Es gibt natürlich wie immer Ausnahmen, aber das muss man einfach lernen.

Gut, wenn alle deine Membervariablen Pointer sind, dann kannst du dich schon sehr glücklich schätzen, dass du soweit gekommen bist. Einen Vorteil bringt es allerdings überhaupt nicht.

Siehe QString in Qt4, die Daten eines QString's werden intern als Pointer gehalten, als Pointer verwenden würde man sie nicht. Es ist sinnlos.

Und wenn etwas sinnlos ist, lässt man es doch lieber sein, oder?

Verfasst: 25. August 2005 16:33
von stippy
Ich habe bisher glaub ich nur Widgets! Das sind alles Pointer!

Gut, grundsätzlich habe ich natürlich kein Problem damit. Man muß es eben nur wissen.

Verfasst: 25. August 2005 16:38
von FlorianBecker
Ok, klang jetzt erstmal so, als sei dein ganzes Programm darauf gestützt, dass du nur Pointer verwendest.

Halte dich immer an die Beispiele, dann läuft fast alles unter Qt Super.

Also auswendig weiß ich nur, dass man QHTTP und Zeug unbedingt als Pointer verwenden muss von den nicht Widget Klassen, sonst sind alle anderen eben keine Pointer Klassen.

Nicht geschrieben, oder nicht gelesen?

Verfasst: 25. August 2005 19:24
von pumbah
Hi,

auch wenn der Beitrag als gelöst markiert wurde: Ich hatte vor kurzem ein ähnliches Problem (unter Qtperl). Allerdings lag das nicht daran, dass die Settings nicht richtig gespeichert wurden, sondern, dass die Funktion zum Lesen offensichtlich nicht in den gleichen Dateien gesucht hat, in denen die Funktion zum Schreiben die Einstellungen geschrieben hat.

Nur so als Einfwurf!:-)

cu,

pumbah