6

我想检测鼠标光标何时在QGraphicsItem按下鼠标按钮时移入,即在鼠标进入项目之前按下按钮。我的第一个想法是使用hoverEnterEvent,但按下鼠标左键时似乎不会触发。我的另一个想法是使用dragEnterEvent,但它似乎根本没有触发(即使我使用过setAcceptDrops(True).

检测光标何时移动到项目顶部并按下鼠标按钮的最佳方法是什么?

4

2 回答 2

4

我刚刚发现了这个问题,我知道它已经过时了,但我希望我的回答对有这个问题的人有用。

在派生类QGraphicsViewQGraphicsScene派生类中重写该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)
于 2012-03-21T13:49:25.613 回答
0

尝试mouseMoveEvent()mousePressEvent()。如果他们没有帮助你,那么你需要重新实现虚拟方法

bool QGraphicsItem::sceneEvent ( QEvent * event )

检查内部的鼠标按钮状态并调用适当的事件处理程序。

于 2011-04-16T21:34:14.293 回答