1

我使用的是 Qt5.6,我QWidget渲染了图形对象,当其他图形呈现在其他图形前面时,这似乎会触发前面图形下的图形更新。

这会产生开销,我想确定后面的图形是否完全被前面的图形遮挡,如果是,那么它应该中止绘制事件。

我认为这将是自动的,并作为 Qt 内部的一部分完成,但似乎不是。

4

1 回答 1

1

每个小部件的绘制事件都来自小部件合成器,一旦合成器确定应该重新绘制小部件。没有办法中止它:如果事件到达,则意味着小部件必须绘制,否则您将获得视觉上未定义的结果。

默认情况下,小部件可以是透明的,小部件合成器必须以从后到前的顺序绘制整个小部件堆栈来组合它们。

任何不透明的小部件都应该Qt::WA_OpaquePaintEvent设置属性。这将通知小部件合成器,任何完全隐藏在小部件后面的小部件都不必被绘制。确保您绘制小部件的每个像素!

于 2016-08-15T18:19:03.377 回答