我有一个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())
答案 0 :(得分:0)
无论你做什么来突出显示项目B,也要在B的dragEnterEvent
中执行此操作,以便在其他项目被拖动时B突出显示。
答案 1 :(得分:0)
我最后从A mouseMoveEvent
发送了一个信号,并在QGraphicsScene
中设置了B中的悬停属性。
它有效,但不是最优雅的解决方案。如果某人有更好的方法,请发布,我会更改已接受的答案。