Qt/KDE: Kommunikation/Datentransfer zwischen Eltern-,Kind- u. Kindeskind-Klassen

Post Reply
Message
Author
mvo

Qt/KDE: Kommunikation/Datentransfer zwischen Eltern-,Kind- u. Kindeskind-Klassen

#1 Post by mvo »

Hallo,
ich habe mal ein paar grundsaetzliche Fragen, zu denen ich zwar funktionsfaehige Antworten finde, die mir aber alle sehr unelegant vorkommen. Vielleicht hab ich ja Tomaten auf den Augen und sehe die einfache Loesung nicht. Folgende Situation (stark vereinfacht, es gibt noch mehr gleichartige Kinder von Main):

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
|-> Widget A (Kind von Main) -> Widget B (Kind von A, modaler Dialog)
Mainwidget -|
|-> Widget C (Kind von Main) -> Widget D (Kind von C, modaler Dialog)
</font><hr></pre></blockquote>

A und C sind zwei Instanzen derselben Klasse. In A, B, C, D werden abhaengig von Benutzereingaben Daten erzeugt. Wenn der Benutzer im Mainwidget "Sichern" auswaehlt, sollen alle Daten in dieselbe KDE-Konfigdatei geschrieben werden. B und D existieren zu dem Zeitpunkt noch.
Dazu faellt mir folgendes ein:
1) A, B, C u. D speichern ihre Daten selber ab. Main sendet nur ein Signal "Speichern" an alle. Dann habe ich ein Problem mit der Koordination, wer speichert wann, alle zugleich geht nicht. Ausserdem muessen A u. C den Parent Zeiger an ihre Kinder weitergeben, damit diese an das "Sichern" Signal von Main connecten koennen.
2) Main erzeugt die Datenstrukturen selber und gibt Zeiger darauf an die Kinder u. Kindeskinder weiter und speichert alle Daten selber ab. Nachteil: Jede Menge Zeiger muessen ueber die Konstruktoren weitergereicht werden.
3) A, B, C u. D sind alles Kinder von Main, so ist die Hierarchie flacher und Main hat direkten Zugriff auf B u. D, aber der Verwaltungsaufwand verdoppelt sich.
4) Alle datenerzeugenden Methoden gehoeren zu Main. Die Kinder sind reine Benutzerschnittstellen. Dann wird Main sehr komplex und unuebersichtlich.
5) Verwendung von globalen Variablen (ist das in C++ schlechter Programmierstil?) fuer die Daten, Main speichert alles selber.
6) Die Kinder speichern ihre Daten in temporaere Dateien, Main fuegt dann alles zusammen.

Schonmal Danke an alle, die bis hier gelesen haben <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">


Dominik Seichter

Re: Qt/KDE:

#3 Post by Dominik Seichter »

Sorry, dillo hat beim Posting oben irgendetwas vergessen, also nochmal:

Du kannst die Methode parent() von QObject verwenden um an den Parent Zeiger zu kommen. Um von B aus den Zeiger zu MainWidget zu bekommen sollte ein this->parent()->parent(); reichen. Um von Mainwidget aus die Liste aller Kinder zu erhalten kannst Du die Methode children() verwenden!

CU Dom

mvo

Re: Qt/KDE: Kommunikation/Datentransfer...

#4 Post by mvo »

Ich wusste ja, irgendwas wichtiges habe ich uebersehen. In dem Fall war es QObject, das fast alle Probleme loest. Besten Dank <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">.

Post Reply