[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):
        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)


    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.

Log in to reply

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.