Gui von anderer Klasse ansprechen

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Nalid
Beiträge: 26
Registriert: 21. Februar 2011 23:49

Gui von anderer Klasse ansprechen

Beitrag von Nalid »

Moin, ich wollte mal nachfragen wie ich von einer anderen Klasse aus auf die ui der Gui Klasse zugreifen kann...

Ich hab versucht einen Pointer des Types der Klasse zu erstellen und dann so zuzugreifen :

Code: Alles auswählen

mygui->ui->myIP->setText(ipAddress);

dabei kam das raus :

Fehler:invalid use of incomplete type 'struct Ui::CGui'

könnte jemand ein kleines Beispiel machen wie ich von der Klasse CConnect auf die ui zugreifen kann? Vielen dank schon mal ;)
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Gui von anderer Klasse ansprechen

Beitrag von franzf »

Er kennt nur den Namen des Typs, weiß mit dem Typen selber aber nichts anzufangen -> in deinem Header hast du nur ne forward declaration. Für die Definition der UI-Klasse musst du noch den passenden Header einbinden.
Prinzipiell würde ich das aber nicht so machen.
1) Du erzeugst eine weitere Abhängigkeit. Das ist aus Design-Sicht schlecht und erzeugt bei Änderungen an der Ui unnötige aber notwendige Neukompilierungen.
2) Das ui ist das "Herz" deines Widgets. Du reichst das einfach so weiter, gibst dein Innerstes Preis. Jeder, dem du das gestattest, kann mit dem Widget treiben was er will! Uneingeschränkt, unkontrolliert! Ebenfalls schlecht aus Design-Sicht.
Die Lösung geht über neue Methoden: Anstatt direkt auf das Label zuzugrifen, bietest du in der Widget-Klasse einen setter an (setIpAddress). Idealerweise machst du das über SIGNAL/SLOT, dann müssen sich die beiden Typen gar nicht kennen! (Wieder ein #include weniger in CCOnnect)
Nalid
Beiträge: 26
Registriert: 21. Februar 2011 23:49

Re: Gui von anderer Klasse ansprechen

Beitrag von Nalid »

Hmm... ok hast recht. So hab ich das net mal überlegt, hab erst neu angefangen OOP in einem richtigem Projekt anzuwenden. Danke viel mal
Antworten