【问题标题】:Black flicker while resizing translucent Qt widget (only when Aero is enabled)?调整半透明 Qt 小部件的大小时出现黑色闪烁(仅在启用 Aero 时)?
【发布时间】:2010-10-07 18:35:38
【问题描述】:

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

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

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

有什么想法吗?

谢谢!

【问题讨论】:

    标签: c++ windows qt aero flicker


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多