Seite 1 von 1

QSettings nicht an Registry oder File anbinden

Verfasst: 2. Januar 2018 10:13
von bobcat
Wenn ich QSettings verwende, dann muss ich doch entscheiden, wo die Settings gespeichert werden sollen, also z.B. in der Registry oder in einer .ini-Datei. Kann man das Speichern auch abstellen? Ich würde gerne ein QSettings-Objekt verwenden, um Einstellungen nur zur Laufzeit in meiner Anwendung intern zu speichern, ohne dass diese persistent auf dem Rechner abgelegt werden. Da QSettings meines Verständnisses nach mit einer internen Map (QSettingsMap) arbeitet, würde ich gerne einfach diese Map verwenden, ohne deren Inhalt auf Platte zu speichern. Aus der Doku entnehme ich allerdings, dass immer ein Speicherort konfiguriert ist. Denn auch, wenn ich den "leeren" QSettings() Konstruktor verwende, wird ja nach den Angaben aus der QCoreApplication in die Registry geschrieben, oder?

Re: QSettings nicht an Registry oder File anbinden

Verfasst: 2. Januar 2018 15:58
von hilefoks
Moin,

Auch ein leeres QSettings hat einen Speicherort, richtig. Das ist btw. auch ungemein praktisch.

Aber du kannst auch verhindern das die Daten persistent werden. Schau dir mal die Funktion registerFormat an: https://doc.qt.io/qt-5/qsettings.html#registerFormat

MfG
Hilefoks

Re: QSettings nicht an Registry oder File anbinden

Verfasst: 11. Januar 2018 10:23
von bobcat
Gute Idee, dann kann ich mir eine interne QMap einrichten, in die QSettings dann speichert. Wäre zwar einfacher, wenn QSettings direkt anbieten würde, die QSettingsMap zu verwenden, aber mit registerFormat(...) dürfte das auch klappen.

Re: QSettings nicht an Registry oder File anbinden

Verfasst: 24. Januar 2018 10:54
von bobcat
Sind nicht mit registerFormat(...) die Daten immer auch an eine Datei oder die Registry angebunden? So wie ich das verstehe, wird doch das QIODevice in readFunc und writeFunc von QSettings übergeben, d.h., ich habe an der Stelle keine eigene Wahlmöglichkeit, wenn ich die Settings nur in einer internen QMap speichern kann, oder?

Ich habe meine Anforderung jetzt so umgesetzt, dass ich zwei polymorphe Klassen geschrieben habe, eine speichert in QSettings, die andere in einer internen QMap. War auch recht kurz und einfach.

Re: QSettings nicht an Registry oder File anbinden

Verfasst: 24. Januar 2018 13:28
von hilefoks
Du bekommst zwar ein QIODevice, brauchst es ja aber nicht nutzen. ;-)

Re: QSettings nicht an Registry oder File anbinden

Verfasst: 12. Februar 2018 14:06
von bobcat
Das probiere ich gerade aus. Allerdings will es mir nicht gelingen, einen Funktionszeiger korrekt zu implementieren. Dazu habe ich ein neues Thema erstellt:
viewtopic.php?f=1&t=18587