Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: OS2 от Июнь 03, 2015, 13:01



Название: Перехват события перемещения мыши
Отправлено: OS2 от Июнь 03, 2015, 13:01
Всем доброго времени суток.
Хотелось выяснить, возможно ли перехватить перемещение указателя мыши над объектом, даже если его перекрывает\перекрывают другие объекты на сцене?
Как я понимаю: по умолчанию (при установленном в true свойстве setAcceptHoverEvents()). при помощи hoverMoveEvent() перехватываются только перемещения мыши, происходящие непосредственно над объектом, но если поверх этого объекта находятся другие объекты (с большим Z-уровнем), то обработчик hoverMoveEvent() для этого объекта не сработает. Существует ли способ обойти это?

Заранее спасибо.


Название: Re: Перехват события перемещения мыши
Отправлено: Fregloin от Июнь 03, 2015, 22:26
ну как минимум сделать вышележащий объект нечувствительным к событиям мыши, тогда в теории они могут пойти глубже в сцену, не уверен правда. иначе нет, тогда есть резон отслеживать перемещение на сцене.


Название: Re: Перехват события перемещения мыши
Отправлено: Igors от Июнь 04, 2015, 06:01
Навесить фильтр, можно на QApplication - через него все события пройдут.


Название: Re: Перехват события перемещения мыши
Отправлено: GreatSnake от Июнь 04, 2015, 09:57
Перегрузи
Код
C++ (Qt)
void QGraphicsScene::mouseMoveEvent(QGraphicsSceneMouseEvent * mouseEvent) [virtual protected]


Название: Re: Перехват события перемещения мыши
Отправлено: OS2 от Июнь 04, 2015, 17:20
Спасибо GreatSnake, так и сделал.