Определить, когда мышь входит в QGraphicsItem кнопкой вниз - PullRequest
4 голосов
/ 02 октября 2010

Я хочу определить, когда курсор мыши перемещается над QGraphicsItem, пока нажата кнопка мыши, т.е. кнопка нажата до того, как мышь входит в элемент. Моя первая идея заключалась в том, чтобы использовать hoverEnterEvent, но, похоже, он не срабатывает при нажатии левой кнопки мыши. Моя другая идея состояла в том, чтобы использовать dragEnterEvent, но, похоже, он вообще не срабатывает (хотя я использовал setAcceptDrops(True).

Как лучше всего определить, когда курсор перемещается поверх элемента и нажата кнопка мыши?

Ответы [ 2 ]

3 голосов
/ 21 марта 2012

Я только что нашел этот вопрос, я знаю, что он старый, но я надеюсь, что мой ответ будет полезен для кого-то с этой проблемой.

В производном классе 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)
0 голосов
/ 17 апреля 2011

Попробуйте mouseMoveEvent() и mousePressEvent().Если они вам не помогут, вам нужно будет переопределить виртуальный метод

bool QGraphicsItem::sceneEvent ( QEvent * event )

Проверьте состояние кнопки мыши внутри и вызовите соответствующий обработчик события.

...