Предположим, у меня есть область на экране, определенная глобальными координатами экрана. Существует виджет (окно верхнего уровня), который перемещается в эту область (с использованием стандартных методов анимации). Я хотел бы вырезать часть виджета, которая оказывается за пределами определенной области экрана, пока она полностью не войдет в эту область, т.е. я хочу, чтобы виджет был нарисован только внутри этого прямоугольника.
Одним из возможных неоптимальных решений является вызов update() всякий раз, когда изменяется положение виджетов, а затем в paintEvent я могу вычислить и установить соответствующее локальное отсечение в QPainter. Однако было бы очень неэффективно перерисовывать все окно только потому, что оно перемещается на экране. По сути, мой вопрос сводится к тому, можно ли установить глобальную область отсечения для виджета?