Seite 1 von 1

Cast von QWidget auf QScrollArea ?

Verfasst: 22. Juni 2006 21:08
von Mati
Hallo,

zunächst ein kurzer Umriss: EIn QWorkSpace in dem man beliebige viele QScrollAreas initialisieren kann die jeweils ein QLabel besitzen um ein Bild darzustellen.

Jetzt kann ich mir im Nachhinein über
QWidget* w = workspace->activeWindow() ;
das aktive Fenster filtern.

Um an die Scrollbars des fensters zu kommen welches ja im Grunde ein QScrollArea ist darf ich da folgenden Cast verwenden (ohne das es irgendwann Probleme gibt?):

Code: Alles auswählen

QScrollArea* s = (QScrollArea*) workspace->activeWindow();
Funktionieren tuts aber ist das auch sicher?

Re: Cast von QWidget auf QScrollArea ?

Verfasst: 22. Juni 2006 23:07
von OscarWild
Mati hat geschrieben:

Code: Alles auswählen

QScrollArea* s = (QScrollArea*) workspace->activeWindow();
Funktionieren tuts aber ist das auch sicher?
Wenn sichergestellt ist, dass nur QScrollAreas im workspace sind, ja. Um sicher zu gehen, kannst Du folgendes machen:

Code: Alles auswählen

QScrollArea* s = dynamic_cast<QScrollArea*>(workspace->activeWindow());
if (s)
{
.
.
}
Klappt der cast nicht, ist s == 0.
(Das ganze erfordert RTTI und geht daher natürlich zulasten der Laufzeit)

Verfasst: 22. Juni 2006 23:28
von upsala
man kann auch qobject_cast verwenden, das benötigt kein rtti kann aber auch nur auf qobject's angewendet werden (was ja hier auch der Fall ist)