ウィジェットがペイント イベントを受け取るのはどのような場合で、OS によってどのように変化するのか疑問に思っています。
paintEvent の Qt ドキュメントには、次のように書かれています
ペイント イベントは、ウィジェットのすべてまたは一部を再描画する要求です。これは、次のいずれかの理由で発生する可能性があります。
repaint() または update() が呼び出された、
ウィジェットが隠されていましたが、今では明らかになりました。または
他の多くの理由。
これまでのところ、paintEvent にいくつかのトレースを入れましたが、
void Widget::paintEvent(QPaintEvent *e)
{
static int count = 0;
qDebug("paintEvent, %d", count++);
}
これが私が見つけたものです(少なくともWindows 7では):
paintEvent は、ウィジェットがフォーカスを失った/獲得したときに呼び出されます。別のウィジェットがウィジェットを通過するとき、ペイント イベントは呼び出されません。Windows 7 の合成が原因かどうかはわかりません。paintEvent は、最小化されたウィンドウが復元されたときにも呼び出されます。サイズ変更時に paintEvent が呼び出されます。
動作はOSに依存していますか?