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打开带有WebGL3d CesiumJS 地理信息客户端时,性能显著低于 QWebEngine。在python tensorflow 对应的tensorboard监控状态页面表现差别更大。

  • 编译器兼容性

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

  • 版本支持

Qt5.4开始提供QWebEngineQt5.5版本QWebEngineQWebKit同时存在,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驱动渲染,避免因系统环境不同导致的崩溃。

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值