首先明确一下动机:为什么要用Qt自己实现一个浏览器?
简而言之,就是希望实现一个介于B/S和C/S之间的混合架构,以适应一些前端展示信息需要频繁更新的生产系统。这种混合架构的优势在于:
相较于C/S架构,对于需要频繁更新的展示部分,只需要在服务端更新相应的前端文件即可,不需要更新所有的终端软件——这同时也是B/S架构的优势;
而传统的B/S架构使用市面上现有的浏览器,无法满足很多生产系统对稳定性的要求;此外,市面上现有的浏览器难以对所在终端的底层系统进行控制;
利用Qt的跨平台特性,可以比较容易地实现对不同平台的支持。
-
QT + QWebEngine+QWebChennel
描述:
Qt WebEngine模块提供了一个基于chromium的核心web浏览器, 在不使用本地浏览器的情况下, 它可以很容易地把Web内容嵌入到Qt应用程序中。
优点:
接口友好,易二次开发,跨平台
缺点:
因为Webengine基于openGL渲染,在某些显卡与系统显卡驱动不匹配的机器上,QWebEngine在渲染时会黑屏甚至崩溃。
-
Qt + CEF(Chromium Embedded Framework)
描述:
Libcef是个基于Google Chromium项目的开源Web browser控件。微信、qq等很多windows客户端都用到了libcef。
优点:
功能齐全,跨平台, 性能高,新特性多.
缺点:
安装包太大,内容多,技术复杂。
首先需要下载编译cef库
官网地址:(需要自己编译mp3 mp4 flash等模块)
https://cef-builds.spotifycdn.com/index.html
我是使用别人编译好的库(支持mp3、mp4、h264),cef版本比较低
X86 X64
3.2623是cef最后一个支持xp系统的,同样也持支持mp3、mp4、h264
X86 X64
文件说明:
必要组件
libcef.dll :CEF核心库。
chrome_elf.dll:崩溃报告库。
icudtl.dat Unicode支持数据。
natives_blob.bin V8快照数据。
snapshot_blob.bin V8快照数据。
可选组件:
以下组件是可选的。如果他们缺少CEF将继续运行但任何相关的功能可能会被破坏或禁用。去掉某些可选组件需要用命令行参数关闭相关功能。
本地化资源。
区域文件加载可以完全禁用CefSettings.pack_loading_disabled。
locales目录路径可以是使用CefSettings.locales_dir_path进行自定义。
语言环境
包含CEF,Chromium和Blink使用的本地化资源的目录。一个 .pak文件是基于CefSettings.locale从此目录加载的值。
只有配置的语言环境需要分发。如果没有区域设置配置将使用“en-US”的默认语言环境。没有这些文件任意Web组件可能显示不正确。
其他资源。
包文件加载可以完全禁用 CefSettings.pack_loading_disabled。
资源目录路径可以是使用CefSettings.resources_dir_path进行自定义。
cef.pak
cef_100_percent.pak
cef_200_percent.pak
这些文件包含CEF,Chromium和Blink使用的非本地化资源。
没有这些文件,任何Web组件可能会显示不正确。
cef_extensions.pak
该文件包含扩展加载所需的非本地化资源。
传递`--disable-extensions`命令行标志来禁止使用这个标志文件。
如果没有这个依赖于扩展系统的文件组件,如PDF查看器将无法正常工作。
devtools_resources.pak
此文件包含Chrome Developer所需的非本地化资源工具。
没有这个文件,Chrome开发者工具将无法运行。
角度和Direct3D支持。
d3dcompiler_43.dll(Windows XP需要)
d3dcompiler_47.dll(Windows Vista及更新版本需要)
libEGL.dll
libGLESv2.dll
没有这些文件,HTML5加速内容,如2D画布,3D CSS和WebGL将不起作用。
Widevine CDM支持。
widevinecdmadapter.dll
如果没有此文件播放Widevine投影内容将不起作用。
下载地址: