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

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

我认为这将是自动的,并且是Qt内部的一部分,但事实并非如此。

最佳答案

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

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

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

关于c++ - Qt图形被另一个遮住,但仍会导致绘画更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38958470/

10-15 12:23