Один из подходов, который вы можете использовать, - это всегда рисовать растровое изображение, но не забывайте заново создавать растровое изображение, если размер окна изменился.
Итак, когда приходит paintEvent, если размер отличается от текущего размера растрового изображения, то в любом случае закрашиваем сохраненное растровое изображение, но затем устанавливаем (или сбрасываем) QTimer , чтобы вызвать сигнал в слоте который обновит изображение.
Когда этот метод обновления запускается, он повторно отображает растровое изображение и запрашивает обновление виджета.