Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Call for Presentations - Qt World Summit

    [Moved] PyQt - Mouse events on GraphicsItems inside a GraphicsScene/GraphicsView

    Language Bindings
    1
    2
    3687
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      squiggly101 last edited by

      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?

      1 Reply Last reply Reply Quote 0
      • S
        squiggly101 last edited by

        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.

        1 Reply Last reply Reply Quote 0
        • First post
          Last post