欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

QT 项目从 5.3.2 升级到 5.14.2,在项目中使用 QWebEngineView 代替 QWebView 后,网页加载滞后。

最编程 2024-03-28 14:12:07
...

项目升级,软件内需要使用QWebEngineView来显示网页,但发现加载的网页渲染很慢(7、8秒以上才渲染出来),而且网页渲染完成后,点击和滚动页面都非常卡顿。

起初认为是自定义设置了网页页面用户代理的问题,也考虑过是不是设置cookie_jar引起的问题,或者设置QWebEngineView某些属性导致的问题,但验证后都不是这些问题。

然后,本人单独创建了一个QWebEngineView程序,页面渲染和交互都很流畅。

最后发现应用程序输出错误如下:

UpdateLayeredWindowIndirect failed for ptDst=(439, 170), size=(1042x700), dirty=(1072x730 -15, -15) (参数错误。)

UpdateLayeredWindowIndirect failed for ptDst=(439, 170), size=(1042x700), dirty=(1072x730 -15, -15) (参数错误。)

UpdateLayeredWindowIndirect failed for ptDst=(439, 170), size=(1042x700), dirty=(1072x730 -15, -15) (参数错误。)

UpdateLayeredWindowIndirect failed for ptDst=(439, 170), size=(1042x700), dirty=(1072x730 -15, -15) (参数错误。)

Progress: 0

UpdateLayeredWindowIndirect failed for ptDst=(1245, 218), size=(198x259), dirty=(214x275 -8, -8) (参数错误。)

出现这个错误的原因是因为我的QWebEngineView的最顶层父对象设置了无边框,所以最顶层父对象需要重新绘制,这也就导致了它的子代对象也要重新绘制。

但是QWebEngineView的绘制有问题,也就造成了卡顿。

这里也感谢QWebEngineView出现"UpdateLayeredWindowIndirect failed for ptDst="的错误 - 开发者知识库 (itdaan.com)的提示。