Mouseover event filter for a PyQT Label

后端 未结 3 539
误落风尘
误落风尘 2020-12-20 22:01

I\'ve been trying to convert the example here to work with a simple label.

Here\'s the code:

class mouseoverEvent(QtCore.QObject):
    def __init__(sel         


        
相关标签:
3条回答
  • 2020-12-20 22:03

    Check out what I just discovered. This is a snippet from some actual code, so class names are specific in my instance.

        def mouseMoveEvent(self, event=None):
            if self.activeLayer.layerName != 'Whiteboard': super(MapPage, self).mouseMoveEvent(event)
            else:
                if (event.buttons() & Qt.LeftButton) and self.scribbling:
                    self.drawLineTo(event.scenePos())
    

    What I have done is re-declared the mouseMoveEvent, but if the running instance of the activeLayer is not named 'Whiteboard' then the software runs through an 'original' mouseMoveEvent.

    0 讨论(0)
  • 2020-12-20 22:05

    class mouseoverEvent(QtCore.QObject): def init(self, parent): super(mouseoverEvent, self).init(parent)

    def eventFilter(self, object, event):
        if event.type() == QtCore.QEvent.MouseMove:
            print "mousemove!"
        return super(mouseoverEvent, self).eventFilter(object, event)
    

    self.filter = mouseoverEvent(self) self.label.installEventFilter(self.filter)

    0 讨论(0)
  • 2020-12-20 22:09

    I believe you need to return True or False from the eventFilter, to indicate whether you have handled the event completely or not.

    0 讨论(0)
提交回复
热议问题