Hallo
Nachdem mein vorheriges Problem (öffnen eines zweiten Fenster aus einer Qt-Anwendung) ganz einfach gelöst werden konnte (hätte auf die Lösung eig selbst kommen müssen^^), stellt sich jetzt ein neues Problem:
Wenn ich im zweiten Fenster auf OK klicke wird eine Datei aktualisiert. Daraufhin möchte ich im Hauptfenster eine Funktion ausführen.
Das Problem, das sich dabei stellt, ist, dass ich dafür die Header-Dateien gegenseitig einbinden müsste (was aus logischen Gründen nicht geht):
Die h-Datei des zweiten Fensters im Hauptfenster, um das zweite Fenster aus dem Hauptfenster öffnen zu können.
Die h-Datei des Hauptfenster im zweiten Fenster, um aus dem zweiten Fenster eine Funktion des Hauptfensters ausführen.
So ist das nicht möglich, aber ich bin mir sicher, dass es da eine andere Möglichkeit gibt - aber welche?
Bin für jede Hilfe dankbar!
Grüße
listeman
Gegenseitiges Einbinden zweier header-Dateien notwendig
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Abgesehen davon dass der Dialog eigentlich nichs über das Hauptfenster wissen muss und seine Daten eher per get funktion zur Verfügung stellen sollte gibts dazu das Stichwort 'Vorwärtsdeklaration'.
Aber das hat alles nichts mit Qt zu tun und steht im C++ Einsteigerbuch in den ersten paar Kapiteln.
Aber das hat alles nichts mit Qt zu tun und steht im C++ Einsteigerbuch in den ersten paar Kapiteln.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Ich weiß, ist zwar Off-topic, jedoch würde ich mir die Strategie nochmals überlegen, den dann kann etwas nicht stimmen wenn man in 2 oder mehr Headerdateien die jeweils anderen benötigt.
In Qt selbst kann man diese Problematik eventuell mit Signals/Slots lösen, ...
In dem Fall könntest Du beispielsweise ein Signal emitten, das die Daten schon beinhaltet oder auch nicht.
Weiters wäre auch denkbar das Du das Fenster erst dann zerstörst, wenn Du die Daten abgeholt hast. (Wie Christian81 schon sagte eventuell mit einer Methode getData() oder ähnliches)
LG NoRulez
In Qt selbst kann man diese Problematik eventuell mit Signals/Slots lösen, ...
In dem Fall könntest Du beispielsweise ein Signal emitten, das die Daten schon beinhaltet oder auch nicht.
Weiters wäre auch denkbar das Du das Fenster erst dann zerstörst, wenn Du die Daten abgeholt hast. (Wie Christian81 schon sagte eventuell mit einer Methode getData() oder ähnliches)
LG NoRulez
In Core C++ kommt das schon ab und an mal vor.jedoch würde ich mir die Strategie nochmals überlegen, den dann kann etwas nicht stimmen wenn man in 2 oder mehr Headerdateien die jeweils anderen benötigt.
z.b. Elemente die Listen von Elementen (selben typ wie selbst) .... und der List-container braucht ne eigene schnittstelle, iss also kein reines template.
Aufloesen kann man sowas eigentlich mit Interfaces, also ner noch strengeren trennung zwischen Schnittstelle und Impl. Aber oftmals will man das auch ned aus performancetechnischen gruenden (vererbung vermeiden).
Prinzipiell sollt man sich grundsätzlich angewoehnen zu forwarden. es macht sehr wenig sinn, zu includen wenn mans ned wirklich braucht , und oftmals isses halt auch schaedlich ....
Ciao ...