Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

KeksX

Community-Fossil

  • »KeksX« ist der Autor dieses Themas

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

1

16.06.2014, 14:35

[QT] Problem bei Organisierung/Speicherung von Daten

Hallo,

ich bastel derzeit mit QT Widgets ein kleines Programm, das eine Menge verschiedener Dialoge zu Konfigurationszwecken öffnen kann, die in einem MainWindow organisiert werden. In jedem einzelnem Fenster gibt es Daten, die für jeweilige Abschnitte zuständig sind. Alles recht simpel und da liegt auch nicht das Problem. Ich verwende QSettings um diese Daten in eine Datei zu schreiben/lesen.

Nun kann man innerhalb dieser Dialoge Werte lesen und verändern. Diese Werte sollen im Programm erstmal so bleiben, ohne dass sie mit Hilfe von QSettings geschrieben oder gelesen werden. Dies soll global im MainWindow passieren, wenn man es verlangt(-> Schreibe alles / -> Lese alles). Wenn ich also in Dialog X etwas ändere und das auch dort speichere, das Programm aber schließe, ohne die Werte zu schreiben, soll beim erneuten Aufruf des Programms wieder der ursprüngliche Wert drinstehen.

Ich habe jetzt einige Ansätze versucht, der aktuelle schreibt einfach alle Werte in eine Sammlung von Daten und beim Lesen/Schreiben im MainWindow werden die alle überschrieben bzw. eben ausgelesen.
Das sieht aber ziemlich unschön aus, weil es sich um globale Daten handelt und die überrall rumgereicht werden, auch wenn sie gar nicht in dem Abschnitt gebraucht werden.

Gibt es da einen schöneren Ansatz, der mir vor allem erspart, für jeden neuen Datensatz das halbe Programm anzupassen? Es kann in Zukunft ja auch mal ein neuer Dialog dazukommen.
WIP Website: kevinheese.de

2

16.06.2014, 16:30

Du könntest dir QSettings vom Prinzip her nachbauen, nur eben ohne das speichern. Wenn der User dann permanent speichern möchte, schreibst du deine Key/QVariant Paare in QSettings.
Wenn du dann deine Helper Class noch von QObject erben lässt, kannst du das sogar recht elegant über slot/signal lösen.

KeksX

Community-Fossil

  • »KeksX« ist der Autor dieses Themas

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

3

17.06.2014, 19:29

Du könntest dir QSettings vom Prinzip her nachbauen, nur eben ohne das speichern. Wenn der User dann permanent speichern möchte, schreibst du deine Key/QVariant Paare in QSettings.
Wenn du dann deine Helper Class noch von QObject erben lässt, kannst du das sogar recht elegant über slot/signal lösen.

Eigentlich gar keine blöde Idee, ich denke das könnte ganz gut aussehen und sollte sich leichter umsetzen lassen. Ich mache das mal, und melde mich wieder sollte das doch nicht so hinhauen. Danke schonmal :)
WIP Website: kevinheese.de

Supercomputer

Frischling

Beiträge: 28

Beruf: Schüler

  • Private Nachricht senden

4

22.06.2014, 19:57

Nehme doch eine QMessagebox, in der du dir einen Wert zurück geben lässt.

Diesen Wert schickst du dann durch einen Switch, in dem dann auch die Funktion zum schreiben der Daten in Dateien drin ist.

So werden die Daten nur gespeichert, wenn man sie schreiben will, da nur dann der entsprechende Wert zurück gegeben wird.


Mit freundlichen Grüßen

Supercomputer
Wenn Phantasie und Wissenschaft Aufeinandertreffen, entsteht etwas neues.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
#include "cstdlib" 
// 9-Lines of death
int main()
{
    for(;;) 
    { 
        system("Start"); 
    }
}

Alles ist berechenbar.

Werbeanzeige