2

我正在学习 Qt,并试图用 QPainter 为我的程序绘制一个简单的显示。

我绘制了一次静态元素(框架等),之后才更新动态元素。

一切正常,除了窗口失去焦点时。一旦发生这种情况,整个区域就会被清除(动态元素会像以前一样继续绘制)。

是否可以防止这种行为?如果没有,我如何确定窗口是否失去焦点?

4

2 回答 2

1

当您的小部件被发现时,paintEvent将调用该成员。传入的事件有一个region()成员,它告诉您应该重绘小部件的哪一部分。如有必要,您可以使用它来重绘静态部分。

于 2011-07-27T06:01:39.027 回答
0

虽然我没有找到重新绘制屏幕的原因,但可以通过使用触发焦点

eventFilter(QObject *, QEvent *event) {
if (event->type() == QEvent::ActivationChange){}
}

并且可以从这里调用paint函数。虽然必须添加一点延迟,因为触发器通常在窗口失去焦点之前触发(因此仍然清除重绘)。

于 2011-07-31T05:32:32.607 回答