调整半透明Qt小部件大小时出现黑色闪烁(仅在启用Aero时)?

3
我有一个顶级Qt小部件,带有FramelessWindowHint标志和设置了WA_TranslucentBackground属性。它有几个子元素,每个子元素都在其上绘制图像。它们不在布局中。相反,当某些内容更改时,我只是移动它们(它不可由用户调整大小)。
窗口有两个状态 - 大状态和小状态。当我在它们之间切换时,我会调整窗口的大小并重新定位子元素。问题在于,随着窗口的调整大小,在图像绘制在其上之前,会在顶级窗口上短暂闪现黑色框。
如果我禁用Aero,则该问题消失。我在一篇描述Qt新版本(此版本已过时)的文章中找到了关于解决此问题的简短提及,但仍无法解决。
你有什么想法吗?
谢谢!
1个回答

0

我对Qt没有具体的经验,但我使用过其他窗口工具包。通常你会在直接向屏幕绘制更新时看到这种闪烁。解决方法是改用双缓冲,这基本上意味着你将更新呈现到离屏缓冲区中(某种位图),然后通过单个快速操作将整个更新的图像复制到屏幕上。

你只有在屏幕刷新速度与更新绘制速度之间的差异比较大时才会看到闪烁。如果你“幸运”的话,所有的更新都发生在屏幕刷新之间,你可能就不会看到任何闪烁。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接