maaGames
@maaGames
Погроммирую программы

Как перехватить перемещение окна до отправки QEvent?

Пытаюсь ограничить перемещение окна пределами одного монитора. Проверяю координаты окна в функции moveEvent и корректирую, чтобы окно нельзя было утащить на другой монитор. Там же сделана приклейка к краю экрана. В целом работает, но окно "мерцает", потому что сперва рисуется в том положении, куда его уже перетащили, а потом окно передвигается в скорректированое место. Чем больше дистанция "приклеивания" или чем быстрее машешь мышкой, тем сильнее мерцание.
Вместо moveEvent пробовал добавить eventFilter, но туда тоже сообщение приходит уже после перемещения окна и происходит двойная отрисовка в разных позициях.

В WinAPI можно перехватить событие до того, как оно было передано окну, скорректировать координаты и сразу рисовать окно в нужном месте. Как подобное провернуть в Qt?
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 1
Нативные сообщения операционной системы можно обрабатывать через QAbstractEventDispatcher::installNativeEventFilter
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы