QPainter重绘窗口获得/失去焦点

时间:2011-07-27 05:23:09

标签: qt focus qpainter

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

我绘制一次静态元素(帧等),之后只更新动态元素。

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

虽然我没有找到重新绘制屏幕的原因,但可以使用

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

和绘画功能可以从这里调用。虽然必须稍加延迟,因为触发器通常在窗口失去焦点之前触发(因此仍然清除重绘)。