我希望在按下鼠标按钮时检测鼠标光标何时移动到QGraphicsItem
,即在鼠标进入项目之前按下按钮。我的第一个想法是使用hoverEnterEvent
,但是当按下鼠标左键时似乎没有触发。我的另一个想法是使用dragEnterEvent
,但它似乎根本没有触发(即使我使用过setAcceptDrops(True)
。
检测光标在项目顶部移动并按下鼠标按钮的最佳方法是什么?
答案 0 :(得分:3)
我刚刚发现了这个问题,我知道它已经过时了,但我希望我的答案对有这个问题的人有用。
在QGraphicsView
或QGraphicsScene
派生类中重写mouseMoveEvent
方法并检查事件的buttons
属性,以了解当前按下的按钮。这是我正在研究的一个小项目PyQt4中的示例代码:
def mouseMoveEvent(self, event):
buttons = event.buttons()
pos = self.mapToScene(event.pos())
object = self.scene().itemAt(pos)
type = EventTypes.MouseLeftMove if (buttons & Qt.LeftButton) else\
EventTypes.MouseRightMove if (buttons & Qt.RightButton) else\
EventTypes.MouseMidMove if (buttons & Qt.MidButton) else\
EventTypes.MouseMove
handled = self.activeTool().handleEvent(type, object, pos)
if (not handled):
QGraphicsView.mouseMoveEvent(self, event)
答案 1 :(得分:0)
尝试mouseMoveEvent()
和mousePressEvent()
。如果他们没有帮助您,那么您将需要重新实现虚拟方法
bool QGraphicsItem::sceneEvent ( QEvent * event )
检查里面的鼠标按钮状态并调用相应的事件处理程序。