Seite 1 von 1

Gui von anderer Klasse ansprechen

Verfasst: 4. Dezember 2011 11:49
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 ;)

Re: Gui von anderer Klasse ansprechen

Verfasst: 4. Dezember 2011 12:44
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)

Re: Gui von anderer Klasse ansprechen

Verfasst: 4. Dezember 2011 13:25
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