Events pyqt graphicsitem鼠标输入事件

Events pyqt graphicsitem鼠标输入事件,events,qt,pyqt,qgraphicsview,qgraphicsitem,Events,Qt,Pyqt,Qgraphicsview,Qgraphicsitem,我正在尝试连接到QGraphicsSitems的鼠标输入事件,该事件放置在QGraphicscene上,并通过QGraphicsView可视化。据我所知,要重写的方法是从QGraphicsItem(或其子类之一)派生的类中的dragEnterEvent。我的尝试如下所示: class StaPoly(QtGui.QGraphicsPolygonItem): def __init__(self,*args): QtGui.QGraphicsPolygonItem.__in

我正在尝试连接到QGraphicsSitems的鼠标输入事件,该事件放置在QGraphicscene上,并通过QGraphicsView可视化。据我所知,要重写的方法是从QGraphicsItem(或其子类之一)派生的类中的dragEnterEvent。我的尝试如下所示:

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)   
statpoly类(QtGui.QGraphicsPolygonItem):
定义初始化(self,*args):
QtGui.QGraphicsPolygonItem.\uuuuu init\uuuuu(self,*args)
self.setAcceptDrops(真)
def dragEnterEvent(自身、事件):
打印“输入!”
...
def牵引(自):
p=自我父母
self.group=QtGui.QGraphicsItemGroup(场景=p.scene)
...
对于lons中的xpix:
poly=QtGui.QPolygonF()
poly部分溶液为:

self.group.setHandlesChildEvents(False)     
这确保了单个项目处理它们自己的事件,这似乎是在团队捕获它们之前

我仍然存在一个问题,即我的GraphicsView会覆盖mouseMoveEvent,并且启用时,不会将任何事件传播到场景项目

编辑:第二个问题的解决方案似乎是从视图mouseMoveEvent处理程序调用基类mouseMoveEvent处理程序

def mouseMoveEvent(self,event):
    QtGui.QGraphicsView.mouseMoveEvent(self, event)

您是否正在重载其他鼠标例程?像老鼠一样?如果鼠标事件与任何操作无关,请确保调用超类。@fabrizioM:不在Statpoly中,不。但是,我正在GraphicsView派生类中重写mouseMove,我已经测试过禁用该函数,但这没有什么区别。我是否需要在我的GraphicsSitem类中重载mouseMove才能让其他东西工作?你是否将self.setAcceptDrops(True)放在GraphicsView中?@fabrizioM:没有,因为我在GraphicsView上的事件工作得很好。我会试试看会发生什么。。。