[Qt4] generelle Frage zur Steuerung von Anwendungen

Alles rund um die Programmierung mit Qt
Antworten
Flachkoepper
Beiträge: 149
Registriert: 11. Januar 2005 12:14
Wohnort: Hannover

[Qt4] generelle Frage zur Steuerung von Anwendungen

Beitrag von Flachkoepper »

Mahlzeit,

ich hab mal eine generelle Frage. Ich habe eine Anwendung, bestehend aus einem QMainWindow und vielen Menüs und Knöppen in der Toolbar. Wenn ein Menüpunkt ausgewählt wird (oder der entsprechende Knopf gedrückt wird), öffnet sich (meistens) ein Dialog, in dem irgendwelche Einstellungen vorgenommen werden, die alle Auswirkungen auf das QMainWindow haben.
Was mich jetzt interessiert ist, wie teile ich dem QMainWindow mit, was in den einzelnen Dialogen passiert ist? Ich würde jetzt (prinzipiell) in der QMainWindow slots definieren, die auf signale aus dem jeweiligen Dialog "lauschen" und dann entsprechend weiterleiten. Ist das der "goldene Weg" oder gibt es noch andere Möglichkeiten?

Viele Grüße,
Flachköpper
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Re: [Qt4] generelle Frage zur Steuerung von Anwendungen

Beitrag von macman »

Wenn Änderungen in den Dialogen sich sofort auf dein MainWindow auswirken sollen, dann ist der Signal/Slot Weg sicher der Beste. Wenn es aber erst beim OK geschehen soll, erstellst Du erst eine Instanz des Dialogs, füllst die Objekte mit den aktuellen Werten, startest den Dialog und liest die Werte hinterher wieder aus.
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

Beitrag von klogg »

Da macman schon alles verraten hat, :wink:
möchte ich nur noch hinzufügen, dass ja durch den Aufruf eines Dialogs
mit der exec() Funktion das MainWindow in den Hintergrund geschaltet wird
und solage der Dialog offen ist auch nicht mehr "angeklickt" werden kann.
Ich würde also nicht das clicked() Signal des Knopfes mit dem Dialog verknüpfen,
sonder mit einem Slot des MainWindow, welcher den Dialog startet
und direkt danach alle Werte aus dem (nun geschlossenen) Dialog liest und verarbeitet.

HENNING
Flachkoepper
Beiträge: 149
Registriert: 11. Januar 2005 12:14
Wohnort: Hannover

Beitrag von Flachkoepper »

Okay, soweit ist das klar und an sich das, was ich mir auch gedacht habe. Wie sieht das aber nun mit QSettings aus? Prinzipiell kann ich ja alle Sachen, auf die ich aus meiner Anwendung heraus immer wieder zugreifen muss, in den Settings ablegen. Macht sowas Sinn und wenn nicht, was wäre eleganter?

Flachkoepper
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

Beitrag von klogg »

Hab noch nie QSettings benutzt. Kann ich leider nichts zu sagen.
Hat das denn jetzt noch was mit der vorigen Sache zu tun?

HENNING
Flachkoepper
Beiträge: 149
Registriert: 11. Januar 2005 12:14
Wohnort: Hannover

Beitrag von Flachkoepper »

Hat das denn jetzt noch was mit der vorigen Sache zu tun?
Im Prinzip schon. Ich überlege mir gerade, wie ich es hinkriege, sowas wie globale Einstellungen während des Programmablaufs zu verwalten und die entsprechenden Parameter an die einzelnen Dialoge zu übergeben und die Änderungen wieder herauszubekommen. Und da bin ich halt über die QSettings gestolpert. Eine andere Idee wäre es sicherlich, Objekte, welche die Einstellungen verwalten, beim Programmstart zu erzeugen und diese dauerhaft im Speicher zu lassen und bei Bedarf abzurufen. Keine Ahnung, wie sich das bei entsprechend vielen Einstellungen auf den Speicherbedarf auswirkt.

Flachkoepper
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

Beitrag von klogg »

Das Beste ist wahrscheinlich, wenn die Einstellungen im MainWindow gespeichert werden.
Ob du dafür eine extra Einstellungs-Klasse oder QSettings oder einen Haufen Member-Variablen verwendest,
ist für den Speicher uninteressant, denn das MainWindow existiert ja auch dauerhaft.
Der Vorteil einer eigenen Klasse wäre, dass du ihr sagen kannst:
"Hier Klasse, schreib mal den Dialog xyz mit allem nötigen Kram voll und starte ihn"

HENNING
Flachkoepper
Beiträge: 149
Registriert: 11. Januar 2005 12:14
Wohnort: Hannover

Beitrag von Flachkoepper »

Danke für die ausführlichen Antworten. Ich denke, dass ich das jetzt hinkriegen werde. Mal schauen, wie ich das genau mache.

Bis demnächst,
Flachkoepper
Antworten