2014-09-05 43 views
8

我在Windows中使用Qt5。我只是在Qt Creator中创建了一个简单的小部件项目。我有一个QMainWindow里面有一个文本编辑部件。我启用了垂直布局,因此文本编辑消耗了主窗口内部的全部大小(这正是我想要的,我正在尝试创建一个小型的记事本应用程序)。在Windows上奇怪的延迟绘画与Qt5

正如我在预览中拖动主窗口的右下角(点击我的绿色三角形左下方)我看到的子控件的大小调整稍有延迟。它不会在同一个渲染框架上与父窗口重新调整大小(看起来像是后面的1-2渲染框架)。

我记得几年前,在老派的Win32 API中处理渲染滞后像这样。我记得我不得不在缓冲区位图上进行双缓冲渲染,以修复它(或者沿着这些线条进行了很长时间)。

有没有办法在Qt中修复这个“渲染延迟”?我只能想象这是特定于Windows,可能不会影响其他平台,虽然我还没有测试过。如果我需要提供更多信息,请告诉我。

+3

我不知道答案,但我建议编译并运行在$ QTDIR/qtbase /例子/部件/富文本/文本编辑的“文字编辑”的示例应用程序,看看它是否也表现出同样的问题。如果是这样,它可能只是Qt在Windows下实现的一种工件;如果没有,请参阅textedit示例应用程序与您的应用程序做的不同。 (FWIW在使用Qt 5.3.1在MacOS/X下调整大小时没有看到任何延迟) – 2014-09-05 06:40:25

+1

感谢Jeremy的建议。我跑了样本,我确实仍然看到这个问题。 – 2014-09-06 01:51:47

+1

请问您可以包含一些代码吗?所以我可以尝试它,也许可以帮助你。 – 2015-05-21 21:45:43

回答

4

这可能是一个Windows问题,而不是Qt的。窗口越重,你的窗口就越显着。


我刚才调查了同一个问题。我们有一个相当GUI的窗口,有几个小部件显示数据的2D和3D视图。使用右下角调整窗口大小会导致重新调整大小 - 重绘恐怖。不幸的是,它看起来像问题不是Qt相关的,而是Windows处理重绘大小窗口的方式。即使在Windows 7上的文件资源管理器中,我也能发现问题。Qt实际上默认情况下使用双缓冲(如@Bim的评论中所述)。我也尝试明确触发Qt的重绘事件。这有所帮助,但没有解决问题。所以经过许多努力,我们决定与之共存。

+0

只需补充一句:“我们只是决定和它一起生活。”这可能是解决这个问题的唯一理智方式。即使是像VS2015,Outlook,Explorer等微软产品也显示出这种行为,所以MS也“随它而生”。 – 2017-01-03 10:25:18