图片通常是解释问题最简单的方法,这是我遇到的问题的截图:
如果你看一下窗口的右侧,你会发现内容被调整大小时有一定的可见延迟。这在很多应用程序中都会出现,但我想知道是否有一种方法可以在使用QQuickView
和QML内容的Qt应用程序中解决此问题。
基本上我的应用程序是这样创建的:
QQuickView view;
view.resize(400, 200);
view.setResizeMode(QQuickView::ResizeMode::SizeRootObjectToView);
view.setSource(...);
QML的内容只是一个带有两个矩形框来突出显示问题的项目。
编辑:这是QML文件的简化版本(是的,简化版本也存在相同的问题 ;p)。
import QtQuick 2.12
Item {
Rectangle {
color: "black"
anchors { fill: parent; margins: 10 }
}
}
编辑2:将此小QML片段通过qmlscene
可执行文件运行,也会显示相同的延迟/滞后。
编辑3:在某些Linux发行版上会出现相同的问题,但在其他一些发行版上则不会:在我的Ubuntu上它可以正常工作,但在我的CentOS 7上,就像Windows上一样出现了相同的延迟/故障。两个Qt版本均为5.12.3。在旧版的OSX上它可以正常工作(在Qt 5.9上测试)。我真的很迷茫^^
有没有办法防止这种延迟?解决方案可能是特定于平台的,因为似乎问题来自于本机帧在Qt有可能获得事件之前被调整大小,因此内容会延迟1帧重新调整大小...但我想知道是否有人有关于如何处理这个问题的想法?
欢迎任何帮助或指针 :)
问候, 达米安