目录

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

Qt 从QWebKit到QWebEngine的更多相关文章

  1. QT5.4.2静态编译(包含QtWebKit),在VS2013上创建项目,并成功运行

            Qt项目发布的exe程序,默认是以动态链接形式的,这样发布后的程序会附带好多Qt自己的dll库,这样文件数量不仅多,而且移植到其他电脑上的时候,还可能会遇到,提示缺其他库等各种运行不起 ...

  2. qwebkit - Open new window after click using QT - Stack Overflow

    qwebkit - Open new window after click using QT - Stack Overflow Open new window after click using QT

  3. 关于qt QWebKit/QWebview 使用心得

    当前项目为c/s客户端,采用qt4.8.7,需要使用仪表盘.折线图.柱状图等,曾经使用过qwt和自定义的图形控件,但是都不尽如人意.最近发现ECharts控件不错.为此就要在qt端使用web的技术.为 ...

  4. QT,折腾的几天-----关于 QWebEngine的使用

    几天前,不,应该是更早以前,就在寻找一种以HTML5+CSS+Javascript的方式来写桌面应用的解决方案,为什么呢?因为前端那套可以随心所欲的写样式界面啊,恩.其实我只是想使用H5的一些新增功能 ...

  5. Qt加载网页(加载浏览器插件)和制作托盘后台运行(南信大财务报账看号)

    程序模块要添加QNetWork和QWebKit模块: nuistfinancevideo.h文件: #ifndef NUISTFINANCEVIDEO_H #define NUISTFINANCEVI ...

  6. 转:QT 的点点滴滴 错误总结

    转自:http://blog.csdn.net/lbsljn/archive/2009/12/29/5099590.aspx MinGw + CodeBlock + QT4.5 类定义后面要加&quo ...

  7. QT与JavaScript互调 - 虹的日志 - 网易博客

    QT与JavaScript互调 - 虹的日志 - 网易博客 QT与JavaScript互调   2012-05-29 21:43:14|  分类: 技术 |  标签:qt  javascript  w ...

  8. 实现QObject与JavaScript通讯(基于QWebEngine + QWebChannel)

    实现QObject与JavaScript通讯(基于QWebEngine + QWebChannel) 通过使用QtWebEngine加载相关页面,然后用QtWebChannel作为Qt与Javascr ...

  9. Qt开发北斗定位系统融合百度地图API及Qt程序打包发布

    Qt开发北斗定位系统融合百度地图API及Qt程序打包发布 1.上位机介绍 最近有个接了一个小型项目,内容很简单,就是解析北斗GPS的串口数据然后输出经纬度,但接过来觉得太简单,就发挥了主观能动性,增加 ...

  10. Qt的QWebChannel和JS、HTML通信/交互驱动百度地图

    Qt的QWebChannel和JS.HTML通信/交互驱动百度地图 0 前言 我一个研究嵌入式的,不知道怎么就迷上了上位机,接了几个项目都是关于Qt,这个项目还是比较经典的,自己没事儿的时候也进行研究 ...

随机推荐

  1. Permutation Counting

    \(n\) 的范围很小,考虑动态规划. \(f_{i,j}\) 在前 \(i\) 个数有 \(j\) 个 \(<\) 的个数. 若 \(\texttt {a<b<c<d}\), ...

  2. python爬虫学习——re模块(正则表达式)

    正则表达式常用操作符 . 任何单个字符 [] 字符集,对单个字符给出取值范围 [abc].[a-z] [^ ] 非字符集,对单个字符给出排除范围 [^abc] * 对前一个字符0次或无限次拓展 abc ...

  3. linux之whiptail交互式shell脚本对话框

    简单说明 当你在linux环境下setup软件的时候就会有相应的对话框让你输入.虽然我们已经习惯了这种交互的方法,但是如果有一种直观的界面来输入是不是会更加友好和方便呢,在shell脚本中你可以使用- ...

  4. 现代Web安全实践:基于Token与Refresh Token的单点登录(SSO)实现

    ​ 在数字化转型加速的今天,单点登录(SSO)已成为企业身份管理的核心基础设施.袋鼠云UED团队在过去几年中,为金融.政务.医疗等领域的大型系统构建SSO解决方案.本文将分享基于Token的标准SSO ...

  5. UFT 连接数据库 & 执行sql 语句

    1. connection sql server 2. 执行sql 语句 3. get db value 4. return DB data row when we have sql command

  6. Kafka入门实战教程(6):调优Kafka的实践

    1 调优Kafka的目标 通常来说,任何系统调优的目标都是为了满足系统常见的非功能性需求,而性能则是众多非功能性需求中最重要的一个. 不同的系统对性能的侧重点不同,DB的话性能是响应时间,而对于Kaf ...

  7. Sql server 游标处理数据

    https://blog.csdn.net/sinat_28984567/article/details/79811887 DECLARE @id INT , @name NVARCHAR(50) - ...

  8. ORACLE--SQL日常问题和技巧1(列变行、自定义查询结构、将字符串分割为多条记录)

    1.ORACLE列变行加合计: 查询结果为 1 SELECT 2 nvl( F, '合计' ) F, 3 sum( S1 ) S1, 4 sum( S2 ) S2, 5 sum( S3 ) S3 6 ...

  9. Windows Server 2016 - 关闭开机显示的管理服务页和关机时必须要输入原因

    虽然服务器不需要经常开关机,但是毕竟是我家用,有时候甚至是把它当成一个极简的Windows10系统.每回开机就立刻跳出管理服务器的界面,而且加载还及其缓慢.让我想起了开机广告的一刀传奇.关机的时候,必 ...

  10. vim 快速在一行的前面加上# // 之类的东西

    首先切换到大写的模式 然后ctrl + v 选中自己想注释的行.上下方向键盘 然后 按i 然后输入自己想要的 东西 然后esc 就输入了