Шаг 236.
Библиотека PyQt5.
Графическая сцена. Обработка событий. События мыши

    На этом шаге мы рассмотрим особенности обработки графическими объектами событий мыши.

    Для обработки нажатия кнопки мыши и перемещения мыши следует наследовать класс, реализующий графический объект, и переопределить в нем такие методы:

    Класс QGraphicsSceneMouseEvent наследует все методы классов QGraphicsSceneEvent и QEvent и добавляет поддержку следующих методов:

    По умолчанию событие мыши перехватывает объект, над которым произведен щелчок мышью. Чтобы перехватывать нажатие и отпускание мыши вне объекта, следует захватить мышь с помощью метода grabMouse() класса QGraphicsItem. Освободить захваченную ранее мышь позволяет метод ungrabMouse(). Получить ссылку на объект, захвативший мышь, можно с помощью метода mouseGrabberItem() класса QGraphicsScene.

    Для обработки прочих событий мыши нужно наследовать класс, реализующий графический объект, и переопределить следующие методы:

    Следует учитывать, что методы hoverEnterEvent(), hoverLeaveEvent() и hoverMoveEvent() будут вызваны только в том случае, если обработка этих событий разрешена. Чтобы разрешить обработку событий перемещения мыши, следует вызвать метод setAcceptHoverEvents(<Флаг>) класса QGraphicsItem и передать ему значение True. Значение False запрещает обработку событий перемещения указателя. Получить текущее состояние позволяет метод acceptHoverEvents().

    Класс QGraphicsSceneHoverEvent наследует все методы классов QGraphicsSceneEvent и QEvent и добавляет поддержку своих методов:

    Класс QGraphicsSceneWheelEvent наследует все методы из классов QGraphicsSceneEvent и QEvent и добавляет поддержку следующих методов:

    На следующем шаге мы рассмотрим обработку перетаскивания и сброса.




Предыдущий шаг Содержание Следующий шаг