3

我有一个带有 FramelessWindowHint 标志和 WA_TranslucentBackground 属性集的顶级 Qt 小部件。它有几个孩子,每个孩子都在上面画一个图像。它们不在布局中。相反,我只是在发生变化时移动它们(它不是用户可调整大小的)。

窗口有两种状态——大状态和小状态。当我在它们之间切换时,我会调整窗口大小并重新定位孩子。问题是当窗口调整大小时,在顶层窗口上会短暂闪烁一个黑框,然后再在其上绘制图像。

如果我禁用 Aero,问题就会消失。我发现在一篇描述 Qt 新版本(这个版本早已过去)的文章中简要提到了这个问题,但它仍然不起作用。

任何想法为什么?

谢谢!

4

1 回答 1

0

我没有专门使用 Qt 的经验,但我使用过其他窗口工具包。通常,当您将更新直接绘制到屏幕上时,您会看到这种闪烁。解决方法是改用Double buffering,这基本上意味着您将更新渲染到屏幕外缓冲区(某种位图,在最纯粹的意义上),然后将整个更新的图像复制到屏幕上,快速操作。

有时您只看到闪烁的原因只是屏幕刷新速度与绘制更新速度之间的关系。如果您“幸运”,那么所有更新都发生在屏幕刷新之间,您可能看不到任何闪烁。

于 2010-04-07T19:10:49.543 回答