我想知道在哪些情况下widget会收到它的paint事件,以及这如何随着操作系统而变化。
Qt文档中对于paintEvent只是简单地说明:
绘制事件是请求重绘部件全部或部分的一个操作。此操作可能发生在以下一种或多种情况下:
调用repaint()或update()函数,
部件被遮挡后又重新显示出来,或者
其他很多原因。
目前为止,我已经在paintEvent中加入了一些跟踪代码,
void Widget::paintEvent(QPaintEvent *e)
{
static int count = 0;
qDebug("paintEvent, %d", count++);
}
这是我在Windows 7上发现的情况:
当小部件失去/获得焦点时,将调用paintEvent。当另一个小部件经过我们的小部件时,不会调用 paintEvent。我不知道这是否归因于Windows 7合成。还有,当最小化的窗口被恢复时,也会调用paintEvent。在调整大小时也会调用paintEvent。
那么这种行为是否依赖于操作系统呢?