was ich nun gerne tun würde:
bei mouse-click auf einen qpainterpath herausfinden, über welchem qpainterpath die maus sich gerade befindet. (ich würde die qpainterpath klasse erweitern um ein attribut "qstring name" und so könnte ich dann den namen des qpainterpath auslesen)
ich hab mir das ganze so vorgestellt:
bei mouseclick lese ich die graphicsscene-position des zeigers aus (schon implementiert). diese position füttere ich an die itemAt() funktion, die mir dann das oberste item an dieser stelle zurückliefert.
woran es im moment scheitert, ist das casten item > painterpath.
kann mir jemand sagen, was ich falsch mache? oder bin ich mit dieser herangehensweise überhaupt am holzweg? aber wie sonst soll ich das picking in der graphicsscene implementieren?
Code: Alles auswählen
void GraphicsScene::mousePressEvent( QGraphicsSceneMouseEvent * mouseEvent )
{
QTransform trans;
//QGraphicsItem *item = itemAt(mouseEvent->scenePos(), trans);
//QPainterPath path = QPainterPath qgraphicsitem_cast( item );
QPainterPath *item = dynamic_cast<QPainterPath *>(itemAt(mouseEvent->scenePos(), trans));
if(item != 0)
emit mousePos(item->name);
}