Мне интересно, в каких случаях виджет получает свое событие рисования и как он отличается от ОС.
Документация Qt для paintEvent говорит только
Событие рисования - это запрос на перерисовку всего или части виджета. Это может произойти по одной из следующих причин:
Вызываетсяrepaint() или update(),
виджет был затенен и теперь открыт, или
много других причин.
До сих пор я помещал некоторые следы в paintEvent,
void Widget::paintEvent(QPaintEvent *e)
{
static int count = 0;
qDebug("paintEvent, %d", count++);
}
и это то, что я узнал (по крайней мере на Windows 7):
PaintEvent вызывается, когда виджет теряет/получает фокус. Событие paint не вызывается, когда другой виджет проходит через наш виджет. Я не знаю, что из-за компоновки Windows 7. PaintEvent также вызывается, когда восстанавливается свернутое окно. При изменении размера вызывается paintEvent.
Итак, поведение зависит от ОС?