在Windows上使用Qt5进行奇怪的延迟绘画

时间:2014-09-05 03:08:37

标签: c++ qt qt-creator qt5

我在Windows中使用Qt5。我刚刚在Qt Creator中创建了一个简单的小小部件项目。我有一个QMainWindow里面有一个文本编辑小部件。我启用了垂直布局,因此文本编辑会占用主窗口内部的全部大小(这就是我想要的,我尝试创建一个小的记事本应用程序)。

当我在预览期间拖动主窗口的右下角(我点击左下方的绿色三角形)时,我看到子窗口小部件的大小调整有一点延迟。它并没有在同一个渲染帧上用父窗口精确调整大小(看起来后面有1-2个渲染帧)。

我记得几年前在旧学校的Win32 API中处理渲染延迟。我记得我必须对屏幕外的位图进行双缓冲渲染才能修复它(或者沿着这些线进行修复;已经很长时间了。)

有没有办法解决这个问题"渲染滞后"在Qt?我只能想象这是Windows特有的,可能不会影响其他平台,虽然我还没有测试过。如果我需要提供更多信息,请告诉我。

1 个答案:

答案 0 :(得分:5)

这可能是Windows问题,而不是Qt。窗口越重,GUI就越明显。

我刚才调查了同样的问题。我们有一个相当GUI的窗口,有几个小部件显示数据的2D和3D视图。使用右下角调整窗口大小导致重新调整重绘恐怖。不幸的是,问题似乎与Qt无关,而是Windows处理重新调整大小调整窗口的方式。即使在Windows 7上的文件浏览器中,我也能够注意到这个问题.Qt确实默认使用双缓冲(如@Bim的评论中所述)。我也尝试过明确触发Qt的重绘事件。这有点帮助,但没有解决问题。经过多方努力,我们决定与之共存。