QSettings nicht an Registry oder File anbinden

Alles rund um die Programmierung mit Qt
Antworten
bobcat
Beiträge: 125
Registriert: 21. April 2010 14:51

QSettings nicht an Registry oder File anbinden

Beitrag 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?
hilefoks
Beiträge: 144
Registriert: 13. März 2008 16:09

Re: QSettings nicht an Registry oder File anbinden

Beitrag 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
bobcat
Beiträge: 125
Registriert: 21. April 2010 14:51

Re: QSettings nicht an Registry oder File anbinden

Beitrag 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.
bobcat
Beiträge: 125
Registriert: 21. April 2010 14:51

Re: QSettings nicht an Registry oder File anbinden

Beitrag 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.
hilefoks
Beiträge: 144
Registriert: 13. März 2008 16:09

Re: QSettings nicht an Registry oder File anbinden

Beitrag von hilefoks »

Du bekommst zwar ein QIODevice, brauchst es ja aber nicht nutzen. ;-)
bobcat
Beiträge: 125
Registriert: 21. April 2010 14:51

Re: QSettings nicht an Registry oder File anbinden

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