【问题标题】:pyqt graphicsitem mouse enter eventpyqt graphicsitem 鼠标进入事件
【发布时间】:2011-07-25 19:12:50
【问题描述】:

我正在尝试连接到放置在 QGraphicsScene 上并通过 QGraphicsView 可视化的 QGraphicsItems 的鼠标输入事件。据我了解,为此覆盖的方法是从 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)   

我希望上面的 sn-ps 可以清楚地说明我想要做什么。请注意,显示完全按照我的意愿生成,没有问题 - 但是绘制的多边形没有响应输入事件 - 我没有看到任何证据表明正在调用 dragEnterEvent()。

【问题讨论】:

  • 您是否正在重载其他鼠标程序?喜欢 mouseMove 吗?如果鼠标事件与任何操作无关,请确保调用超类。
  • @fabrizioM:不在 StaPoly 中,没有。然而,我在我的 GraphicsView 派生类中覆盖了 mouseMove,并且我已经测试过禁用该功能,但它没有任何区别。我是否需要在我的 GraphicsItem 类中重载 mouseMove 才能让其他东西正常工作?
  • 您是否将 self.setAcceptDrops(True) 放入 GraphicsView 中?
  • @fabrizioM:不,因为我在 graphicsview 上的事件运行良好。不过我会尝试一下,看看会发生什么......

标签: events qt pyqt qgraphicsview qgraphicsitem


【解决方案1】:

(部分)解决方案是这样的:

self.group.setHandlesChildEvents(False)     

这确保了单个项目处理自己的事件,似乎在组捕获它们之前。

我的 GraphicsView 覆盖了 mouseMoveEvent 仍然存在问题,并且当启用时,没有事件传播到场景项。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-15
    • 2015-10-12
    • 2021-05-17
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    相关资源
    最近更新 更多