gpt4 book ai didi

c++ - 调整半透明 Qt 小部件大小时黑色闪烁(仅当启用 Aero 时)?

转载 作者:可可西里 更新时间:2023-11-01 09:39:00 30 4
gpt4 key购买 nike

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

窗口有两种状态——大状态和小状态。当我在它们之间切换时,我会调整窗口大小并重新定位 child 。问题是随着窗口大小的调整,在图像被绘制到上面之前,一个黑框会在顶层窗口上短暂闪烁。

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

有什么想法吗?

谢谢!

最佳答案

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

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

关于c++ - 调整半透明 Qt 小部件大小时黑色闪烁(仅当启用 Aero 时)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2269484/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com