Как перехватить перемещение окна до отправки QEvent?
Пытаюсь ограничить перемещение окна пределами одного монитора. Проверяю координаты окна в функции moveEvent и корректирую, чтобы окно нельзя было утащить на другой монитор. Там же сделана приклейка к краю экрана. В целом работает, но окно "мерцает", потому что сперва рисуется в том положении, куда его уже перетащили, а потом окно передвигается в скорректированое место. Чем больше дистанция "приклеивания" или чем быстрее машешь мышкой, тем сильнее мерцание.
Вместо moveEvent пробовал добавить eventFilter, но туда тоже сообщение приходит уже после перемещения окна и происходит двойная отрисовка в разных позициях.
В WinAPI можно перехватить событие до того, как оно было передано окну, скорректировать координаты и сразу рисовать окно в нужном месте. Как подобное провернуть в Qt?
Александр Ананьев, Да это понятно, но там нужно делать релизацию на WinAPI с сообщениями очереди сообщений Windows. Это выглядит костылями. Я был уверен, что Qt даёт это сделать своими средствами, без платформенно-зависимых костылей.
Событие посылает операционная система в приложение, по логике можно перехватить в обработчике событий приложения, там как я понимаю есть очередь для событий. Надо бы в код лезть.
Павел Дорофеев, Ну вопрос не в исходникак и не в отладчике. Через QAbstractEventDispatcher::installNativeEventFilter можно сделать, но это корявое платформо-зависимое решение. Интересует родное Qt решение, без привязки к платформе или каких-то полу-хакерских трюков.