当鼠标拖动其他项目时,项目悬停事件不起作用

时间:2014-01-23 23:19:23

标签: python qt pyqt pyside

我有一个QGraphicsView,有两种来自QGraphicsItem的子项。第一类物品(A)是可移动的。第二种(B)应该总是突出显示它在鼠标指针下面。

如果B在A下,B仍然可以突出显示。但是如果在拖动A时鼠标指针超过B,则B不会突出显示。

启用此行为的最简洁方法是什么?

修改

这就是我为B实现突出显示的方式:

def hoverEnterEvent(self, *args, **kwargs):
    self.hover = True
    self.update()

def hoverLeaveEvent(self, *args, **kwargs):
    self.hover = False
    self.update()

def paint(self, painter, *args, **kwargs):
    painter.setRenderHint(QPainter.Antialiasing)
    if self.hasFocus() or self.hover:
        painter.setPen(self.pen_selected)
    else:
        painter.setPen(self.pen())
    painter.drawPath(self.path())

2 个答案:

答案 0 :(得分:0)

无论你做什么来突出显示项目B,也要在B的dragEnterEvent中执行此操作,以便在其他项目被拖动时B突出显示。

答案 1 :(得分:0)

我最后从A mouseMoveEvent发送了一个信号,并在QGraphicsScene中设置了B中的悬停属性。

它有效,但不是最优雅的解决方案。如果某人有更好的方法,请发布,我会更改已接受的答案。