我想检测鼠标光标何时在QGraphicsItem
按下鼠标按钮时移入,即在鼠标进入项目之前按下按钮。我的第一个想法是使用hoverEnterEvent
,但按下鼠标左键时似乎不会触发。我的另一个想法是使用dragEnterEvent
,但它似乎根本没有触发(即使我使用过setAcceptDrops(True)
.
检测光标何时移动到项目顶部并按下鼠标按钮的最佳方法是什么?
我想检测鼠标光标何时在QGraphicsItem
按下鼠标按钮时移入,即在鼠标进入项目之前按下按钮。我的第一个想法是使用hoverEnterEvent
,但按下鼠标左键时似乎不会触发。我的另一个想法是使用dragEnterEvent
,但它似乎根本没有触发(即使我使用过setAcceptDrops(True)
.
检测光标何时移动到项目顶部并按下鼠标按钮的最佳方法是什么?
我刚刚发现了这个问题,我知道它已经过时了,但我希望我的回答对有这个问题的人有用。
在派生类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)
尝试mouseMoveEvent()
和mousePressEvent()
。如果他们没有帮助你,那么你需要重新实现虚拟方法
bool QGraphicsItem::sceneEvent ( QEvent * event )
检查内部的鼠标按钮状态并调用适当的事件处理程序。