Cast von QWidget auf QScrollArea ?

Alles rund um die Programmierung mit Qt
Antworten
Mati
Beiträge: 66
Registriert: 4. Januar 2006 00:11

Cast von QWidget auf QScrollArea ?

Beitrag 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?
OscarWild
Beiträge: 54
Registriert: 19. Juni 2006 19:59

Re: Cast von QWidget auf QScrollArea ?

Beitrag 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)
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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)
Antworten