我想知道小部件在哪些情况下会收到它的绘制事件,以及它如何随操作系统而变化。
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。
那么行为是否依赖于操作系统?