Seite 1 von 1

member von QWidget

Verfasst: 5. Januar 2009 12:43
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)

Re: member von QWidget

Verfasst: 5. Januar 2009 13:05
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

Verfasst: 5. Januar 2009 13:31
von nici
danke das hat mir sehr geholfen.