[Moved] PyQt - Mouse events on GraphicsItems inside a GraphicsScene/GraphicsView
-
I am trying to connect to the mouse-enter event of QGraphicsItems that are placed onto a QGraphicsScene and visualized through a QGraphicsView. From what I understand, the method to override for this is dragEnterEvent in a class derived from QGraphicsItem (or one of it's subclasses). My attempt looks like this:
@
class StaPoly(QtGui.QGraphicsPolygonItem):def __init__(self,*args): QtGui.QGraphicsPolygonItem.__init__(self,*args) self.setAcceptDrops(True) def dragEnterEvent(self,event): print "Enter!" ... def draw(self): p = self.parent self.group = QtGui.QGraphicsItemGroup(scene=p.scene) ... for xpix in lons: poly = QtGui.QPolygonF() poly << QtCore.QPointF(xpix-symw,ypix) poly << QtCore.QPointF(xpix,ypix+symh) poly << QtCore.QPointF(xpix+symw,ypix) poly << QtCore.QPointF(xpix,ypix-symh) item = StaPoly(poly) item.setPen(QtGui.QColor(color)) item.setBrush(QtGui.QColor(color)) self.group.addToGroup(item)
@
I hope the above snippets make it clear what I am trying to do. Note that the display is generated exactly as I desire, no issue there - however the polygons that get drawn are not responding to the enter-event - I am not seeing any evidence that dragEnterEvent() is being called.
Any advice on how to make this work?
-
The (partial) solution was this:
@self.group.setHandlesChildEvents(False) @
This ensures that individual items handle their own events, it seems that before the group was capturing them.
I still have a problem in that my GraphicsView overrides the mouseMoveEvent, and when enabled, no events get propagated to scene items.