Aus einem QCanvasItem auf ein QCanvasText Text schliesse

Alles rund um die Programmierung mit Qt
Antworten
McNik
Beiträge: 12
Registriert: 12. Juli 2006 20:14

Aus einem QCanvasItem auf ein QCanvasText Text schliesse

Beitrag von McNik »

Hallo zusammen

habe das Problem, dass ich eine QCanvas habe, in dem verschiedene QCanvas Rectangle enthalten sind. In diesen Rectangle ist jeweils ein Text der zur "identikikation" dient. An diesen Text muss ich zum speichern und laden der Canvas (vor allem der Position) ran kommen.
Habe mir erst überlegt, einfach die RTTI Nummer bei den Rectangle und Texten immer zu erhöhen (z.B. rec rtti = 100x, text rtti = 500x) um damit den Text und das Rectangle zu identifizieren.
Die RTTI Nummern sollen aber eigentlich nur zur Identifikation der Object Art sein.
Gibt es eine Möglichkeit auf einen Text zu schliessen, wenn ich nur ein QCanvasItem Iteratot *it habe, von dem ich weiss, das er einText ist ((*it)->rtti==3) ?
Mir ist leider nix eingefallen und aus google habe ich auch nichts raus bekommen :oops:

Schon mal Danke für eure Ideen
McNik
Beiträge: 12
Registriert: 12. Juli 2006 20:14

mehr oder weniger GELÖST

Beitrag von McNik »

also habe etwa in einem QT Buch gefunden

Code: Alles auswählen

*Ausschnitt*
 
	    QCanvasItemList inRectangle = (*it)->collisions(true);
	    QCanvasItemList::iterator st;
	    for (st = inRectangle.begin();st != inRectangle.end(); ++st)
	    {			
		if ((*st)->rtti() == 3)
		{  
                   //warum funktioniert das?? 
                   QCanvasText *text = (QCanvasText *)(*st);
		    qDebug( " ist in Modulname an Stelle:" + text->text());
		}

Aber ich versteh nicht genau warum das funktioniert. Kopiere ich damit einfach nur den Zeiger auf das Object auf eine andere ObjectArt?
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Re: mehr oder weniger GELÖST

Beitrag von Goos »

McNik hat geschrieben: Kopiere ich damit einfach nur den Zeiger auf das Object auf eine andere ObjectArt?
Koennte man grob so sagen, ja.
Du solltest mit dem C-Style Cast im allgemeinen aber vorsichtig sein.
Der bietet dir keinerlei Typsicherheit.
In dem genauen Fall ueberpruefst du vorher die Runtime Typinformationen, kannst dir also sicher sein, dass du auch ein QCanvasText vor dir hast, aber allgemein wuerde ich eher zu einem dynamic_cast raten.

Goos
Antworten