Qt 从QWebKit到QWebEngine

目录

QWebKit与QWebEngine的区别

QtWebEngine模块

升级流程

更改头文件

中文问题

平台相关性问题

QWebKit与QWebEngine的区别
QtWebEngine模块
模块中,Qt WebEngine Core是基于chromium的核心,widgets、WenEngine和 process主要分别针对桌面、QML等需求。

 

 

与WebKit主要区别:

区别项目

WebKit

WebEngine

调用习惯

同步

异步

Html5兼容性

较差

windows编译器兼容性

同步vs异步
QWebKit很多操作都是同步进行的,包括JS的调用、获得返回值等等。QWebEngine几乎所有的操作都是异步的。

Html5兼容性
WebKit打开带有WebGL的3d CesiumJS 地理信息客户端时,性能显著低于 QWebEngine。在python tensorflow 对应的tensorboard监控状态页面表现差别更大。

编译器兼容性
QWebKit在windows下有mingw、vc++几个版本的预编译包。但是,要是使用QWebEngine,貌似暂时只能使用VisualStudio,且官方提供的是x64版本。从编译器兼容性来说,WebKit显然更好。

版本支持
Qt5.4开始提供QWebEngine,Qt5.5版本QWebEngine和QWebKit同时存在,Qt5.6之后废弃QWebKit。

综合以上因素,将QWebKit更换成QWebEngine,将Qt版本从Qt4.8升级到Qt5.7。同时Qt5使用了大量的C++11的特性,然而VC2013之前的版本对C++11基本不能很好的支持,所以要将VS2008+ Qt4.8工程移植到VS2013+ Qt5.7。参考官方提供的一个例子cookiebrowser。

升级流程
更改头文件
相对于Qt4,Qt5的一个主要的基础架构修改是,将 widget从QtGui模块剥离开来,简单地来讲,就是需要包含的头文件发生变化了,所以升级第一步得修改头文件,否则编译无法通过。

i. #include <QtGui/QWidget>修改为#include <QWidget>
ii. #incude <QColorGroup>注释掉(Qt5没有QColorGroup这个头文件了)
iii. #include <QtGui/QMainWindow>更改为#include <QMainWindow>
iv. #include <QtGui/QApplication>更改为#include <QtWidgets/QApplication>
中文问题
由于Qt5取消了很多字符串的函数,所以把Qt4的项目升级到Qt5可能会出现中文显示的问题。

平台相关性问题
Qt5WebEngine.exe 运行时需要调用opengl32sw.dll动态库,系统不同会导致Qt5WebEngine.exe运行时崩溃,初始化Application后调用(在main函数里)

QApplication::setAttribute(Qt::AA_UseSoftwareOpenGL);
并将opengl32sw.dll放在运行目录下

本行代码指定使用软件版openGL,不去调用硬件openGL驱动渲染,避免因系统环境不同导致的崩溃。
————————————————
版权声明:本文为CSDN博主「灰太狼1号」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/deram_boy/article/details/84871604

posted @ 2021-07-14 10:29  China Soft  阅读(1236)  评论(0编辑  收藏  举报