Шаг 238.
Библиотека PyQt5.
Графическая сцена. Обработка событий. Фильтрация событий

    На этом шаге мы рассмотрим особенности организации фильтрации событий.

    События можно перехватывать еще до того, как они будут переданы специализированному методу. Для этого в классе графического объекта необходимо переопределить метод sceneEvent(self, <event>). Через параметр <event> здесь будет доступен объект с дополнительной информацией о событии. Тип этого объекта различен для разных типов событий. Внутри метода следует вернуть значение True, если событие обработано, и False - в противном случае. Если вернуть значение True, то специализированный метод (например, mousePressEvent()) выполняться не будет.

    Чтобы произвести фильтрацию событий какого-либо объекта, в классе графического объекта необходимо переопределить метод sceneEventFilter(self, <QGraphicsItem>, <event>).

    Через параметр <QGraphicsItem> здесь будет доступна ссылка на объект, в котором возникло событие, а через параметр <event> - объект с информацией о самом событии. Тип этого объекта различен для разных типов событий. Внутри метода следует вернуть значение True, если событие обработано, и False - в противном случае. Если вернуть значение True, объект, в котором возникло событие, не получит его.

    Указать, события какого объекта фильтруются, позволяют следующие методы класса QGraphicsItem:

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




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