Seite 1 von 1
QGraphicsScene Child Items
Verfasst: 17. August 2010 10:02
von TheBert
Hi,
ich habe eine qgraphicsscene und darauf ein paar objekte lieben (qgraphicstextitem, qgraphicsrectitem, usw.)
Ich bekomme ja mit
alle elemente die auf dieser scene platziert sind.
Die childs kann ich mittels qgraphics_cast auf qgraphicstextitems casten und dann über den objectName identifizieren.
Mein problem ist jetzt, das ich auf der scene z.b. 4 qgraphicsrectitems liegen haben, aber die qgraphicsrectitems keinen objectName haben. Wie kann ich die qgraphicsrectitems identifizieren? Sodass ich sagen kann, z.b. text_item1 liegt in feld 2, text_item2 liegt in feld 1 usw.
Danke!
Verfasst: 17. August 2010 10:50
von upsala
Auf QGraphicsRectItem casten und kontrollieren ob der Pointer nicht 0 ist.
Verfasst: 17. August 2010 10:53
von franzf
Du willst sie über einen bestimmten Namen (QString) identifizieren?
Nimm (z.B.) nen QHash<QGraphicsRectItem*, QString>.
Verfasst: 17. August 2010 10:58
von TheBert
upsala hat geschrieben:Auf QGraphicsRectItem casten und kontrollieren ob der Pointer nicht 0 ist.
Und das sagt mir wie das QGraphicsRectItem heißt?
franzf hat geschrieben:Du willst sie über einen bestimmten Namen (QString) identifizieren?
Nimm (z.B.) nen QHash<QGraphicsRectItem*, QString>.
Danke für die anregung, aber gibts da nicht auch so eine möglichkeit wie bei QGraphicsTextItem mittels objectName()?
Danke!
Verfasst: 17. August 2010 11:09
von franzf
TheBert hat geschrieben:Danke für die anregung, aber gibts da nicht auch so eine möglichkeit wie bei QGraphicsTextItem mittels objectName()?
Jein, denn QGraphicsTextItem erbt von QGraphicsObject, dieses wiederum von QGraphicsItem UND QObject - und QObject bietet eben objectName. QGraphicsRectItem erbt nur von QGraphicsItem, deshalb gibt es keinen objectName.
Wenn dir der Weg über die QHash/QMap zu kompliziert ist (kann ich mir fast nicht vorstellen
![Razz :P](./images/smilies/icon_razz.gif)
), kannst du mit einer eigenen Klasse arbeiten:
Code: Alles auswählen
class MyRectItem : public QObject, public QGraphicsRectItem {
};
Verfasst: 17. August 2010 11:13
von TheBert
Danke für die antwort. Zu kompliziert nicht, nur muss ich jetzt entscheiden, entweder die 4 und manchmal auch nur 2 QGraphicsRectItems in QHash zu verpacken inkl. einem namen, oder ich erstelle eine eigene klasse.
Ich werde warscheinlich eine eigene klasse erben lassen. Danke für den hinweis.
Verfasst: 17. August 2010 12:47
von upsala
Man könnte auch data() verwenden.
Verfasst: 17. August 2010 12:48
von franzf
upsala hat geschrieben:Man könnte auch data() verwenden.
Oh... Seit wann gibts denn das? Ist mir noch nie aufgefallen
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
Verfasst: 17. August 2010 12:54
von TheBert
Ok, dann kann ich mir das auch ersparen, danke für den tipp mit data(), das ist genau das was ich gesucht habe.