member von QWidget

Alles rund um die Programmierung mit Qt
Antworten
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

member von QWidget

Beitrag von nici »

Hallo, (ja ich bins wieder ^^)

ich möchte mir die Werte aus einem Tab in den anderen Tab holen.
Mach ich das nicht, wenn ich vom tabpanel aus auf das Tab zugreife??

Code: Alles auswählen

this->parentWidget()->tabWidget(1)->getC1();
Es kommt die Fehlermeldung: error: 'class QWidget' has no member named 'tabWidget'


lg
nici (und ein frohes, gesundes, spannendes und erfolgreiches Jahr)
Hmm mir fällt nichts ein ^^
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: member von QWidget

Beitrag von franzf »

nici hat geschrieben:

Code: Alles auswählen

this->parentWidget()->tabWidget(1)->getC1();
Es kommt die Fehlermeldung: error: 'class QWidget' has no member named 'tabWidget'
Ist doch auch klar. Das parentWidget() erbst du von QWidget, und dieses liefert einfach nur einen pointer auf ein QWidget zurück. Nicht mehr.
Du musst das dann erst noch casten:

Code: Alles auswählen

QTabWidget* tw = qobject_cast<QTabWidget*>(parentWidget());
Nun hast du ein QTabWidget.
Und nun das gleiche Spielchen nochmal, denn widget(int index) (nicht tabWidget() nebenbei) liefert - na was? - auch nur ein QWidget.

Code: Alles auswählen

MyWidget *myW = qobject_cast<MyWidget*>(tw->widget(1));
Jetzt kannst du getC1() auf myW loslassen.

Und um sicher zu gehen, musst du natürlich auch noch erst prüfen, ob der cast auch wrklich geklappt hat! Also vor einem Zugriff erst auf NULL prüfen:

Code: Alles auswählen

if( tw ) QWidget* w = tw->widget(1); // usw...
Ebenso mit myW.

Grüße
Franz
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

danke das hat mir sehr geholfen.
Hmm mir fällt nichts ein ^^
Antworten