当按钮按下时鼠标进入QGraphicsItem时检测

时间:2010-10-02 12:12:27

标签: qt qgraphicsitem

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

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

2 个答案:

答案 0 :(得分:3)

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

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)

答案 1 :(得分:0)

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

bool QGraphicsItem::sceneEvent ( QEvent * event )

检查里面的鼠标按钮状态并调用相应的事件处理程序。