我QGraphicsView
用来创建一种电路编辑器,其中有元素,有连接器。应该可以用电线连接这些连接器。但是,我有一个问题,当我从一个连接器拖动到另一个连接器时,Qt 抓住鼠标,而其他连接器停止接收hoverEnterEvent
. 顺便说一句,在悬停连接器上调整大小,因此更容易击中它们。
再一次,是否可以在拖动时不抓住鼠标?
我在 Windows 上使用过 Qt 4.5。
根据要求,这里有一些来源: http: //pastebin.com/m422b9495
我QGraphicsView
用来创建一种电路编辑器,其中有元素,有连接器。应该可以用电线连接这些连接器。但是,我有一个问题,当我从一个连接器拖动到另一个连接器时,Qt 抓住鼠标,而其他连接器停止接收hoverEnterEvent
. 顺便说一句,在悬停连接器上调整大小,因此更容易击中它们。
再一次,是否可以在拖动时不抓住鼠标?
我在 Windows 上使用过 Qt 4.5。
根据要求,这里有一些来源: http: //pastebin.com/m422b9495
在拖动操作期间更改鼠标悬停行为有点典型。通常响应鼠标移动的小部件在拖动过程中往往不响应,除非它们可以接收相关的拖放。所以通常的悬停事件被抑制。(检查小部件是否接受一些放置是不够的,因为问题是小部件是否可以接受这种放置。)除了悬停事件之外,尝试使用拖动的进入和离开事件来调整连接器的大小。
您可以在源项中使用 mouseMoveEvent 来检查光标何时位于目标项上。
例如:
def mouseMoveEvent(self, event):
item = self.scene().itemAt(event.scenePos(), self.scene().views([0].transform())
if isinstance(item, NodeConnectionGraphicItem):
if self.item_over_drag is None:
self.item_over_drag = item
item.highlighted_mouse_over = True
...
item.update()
elif self.item_over_drag is not None:
self.item_over_drag.highlighted_mouse_over = False
self.item_over_drag.update()
self.item_over_drag = None