QGraphicsView ведет себя по-разному, когда мышь удерживается над QGraphicsProxyWidget
У меня есть графический интерфейс pyside2, который использует QGraphicsView.
Я использую setDragMode(QGraphicsView.ScrollHandDrag), чтобы сделать представление перетаскиваемым, но я перезаписываю курсор с помощью viewport(). SetCursor(Qt.ArrowCursor) на mouseReleaseEvent, чтобы избежать постоянного наличия открытой руки вместо обычного курсора-стрелки. Это объясняется здесь: изменение курсора в QGraphicsView (в C++)
В графическом интерфейсе также есть QGraphicsProxyWidget с QLabel. Когда мышь помещается над ProxyWidget, viewport(). SetCursor(Qt.ArrowCursor) не работает (вызывается moseReleaseEvent, поэтому я знаю, что setCursor вызывается), а когда мышь покидает ProxyWidget, с открытой ладонью курсор показывает вместо стрелки-курсора.
Когда мышь находится во всех других местах в QGraphicsView, все работает как положено.
Кто-нибудь знает, почему setCursor ведет себя по-разному, когда мышь находится над proxyWidget?
В QGraphicsView:
def mouseReleaseEvent(self, event):
QGraphicsView.mouseReleaseEvent(self, event)
self.viewport().setCursor(Qt.ArrowCursor)
def infoBoxShow(self, edge, mouse_pos):
if self.info_box is None:
self.info_box = VardeInfoBox_v2.InfoBox()
self.info_box.corresponding_edge = edge
self.info_box.setPos(mouse_pos)
self.info_box.setInfoText(edge)
self.main_scene.addItem(self.info_box)
InfoBox (Как вы можете видеть, я пытался установить некоторые флаги без успеха):
class InfoBox(QGraphicsItem):
Type = QGraphicsItem.UserType + 1
def __init__(self):
QGraphicsItem.__init__(self)
self.setFlag(QGraphicsItem.hover)
self.setZValue(4)
proxy = QGraphicsProxyWidget(self)
widget = QLabel("TEST!")
widget.setAttribute(Qt.WA_TransparentForMouseEvents)
widget.setWindowModality(Qt.NonModal)
proxy.setWidget(widget)
self.corresponding_edge = None