1. 编译环境
windows10 + qt5.14.2 + VS2017 + cef windows-64
2. Qt嵌入浏览器方法对比
2.1 QAxObject
2.1.1 描述
com/ocx组件等组件开发,因为是此方式只针对微软的组件才有效,所以只能在windows下开发。
2.1.2 操作系统要求
不夸平台,只能再windows下使用
2.1.3 优点
2.1.4 缺点
2.1.5 总结
不可以用来加载第三方的应用程序,不跨平台,不使用。
2.2 Qt + Miniblink
2.2.1 描述
Miniblink是一款精简小巧的浏览器控件,基于chromium精简而成,是市面上最小巧的chromium内核控件
2.2.2 操作系统要求
不夸平台,目前只支持windows开发。
2.2.3 优点
安装包体积小(早期版本不足20M),功能齐全。
2.2.4 缺点
部分功能需要付费,字体渲染模糊和不支持多语言是很大缺陷,不跨平台。
2.2.5 总结
简单易用,用的不好易崩。并且,不跨平台,不推荐使用。
2.3 QWebview
2.3.1 描述
Qt5.6版本之前的功能,使用QWebview调用查看浏览器内容,可通过网址使用本机默认浏览器打开网页。5.6版本后QWebview模块QT团队不在维护。
2.3.2 操作系统要求
跨平台,可在windows、linux、android、mac操作系统上开发。
2.3.3 优点
接口友好,易二次开发,跨平台,可以在windows,linux,mac平台开发。
2.3.4 缺点
技术老旧,内存泄漏、不完美、兼容性不好,使用中容易出现异常、崩溃等不可预知问题。
2.3.5 总结
简单易用,但是技术已经被淘汰,不推荐使用。
2.4 QT + QWebEngineQt+QWebChennel
2.4.1 描述
在qt5.7版本以后,Qt WebEngine模块提供了一个基于chromium的核心web浏览器, 在不使用本地浏览器的情况下, 它可以很容易地把Web内容嵌入到Qt应用程序中。
2.4.2 操作系统要求
跨平台,可在windows、linux、android、mac操作系统上开发。
2.4.3 优点。
接口友好,易二次开发,跨平台
2.4.4 缺点
因为Webengine基于openGL渲染,在某些显卡与系统显卡驱动不匹配的机器上,QWebEngine在渲染时会黑屏甚至崩溃。
2.4.5 总结
易二次开发,目前技术相对成熟,可以考虑使用。
2.5 Qt + CEF(Chromium Embedded Framework)
2.5.1 描述
Libcef是个基于Google Chromium项目的开源Web browser控件。微信、qq等很多windows客户端都用到了libcef,目前全球有超过1亿CEF运行实例,其嵌入在广泛公司和企业的嵌入式产品中。
2.5.2 平台要求
跨平台,Windows, Linux, Mac平台。
2.5.3 优点
功能齐全,跨平台, 性能高,新特性多.
2.5.4 缺点
安装包大(80M+),内容多,技术要求高。
2.5.5 总结
目前主流的嵌入浏览器开发框架,推荐使用。
3. 相关软件下载路径
cef:https://cef-builds.spotifycdn.com/index.html
cmake:https://cmake.org/download/
4. cef简述
嵌入式框架 (CEF) 是基于 Google 铬项目的开源项目。与主要专注于 Google Chrome 应用程序开发铬项目本身的铬项目不同,CEF 专注于促进第三方应用程序中的嵌入式浏览器使用案例。CEF 通过提供生产质量稳定的 API、跟踪特定 Chromium 的发布分支和二进制分布,使用户与底层铬和闪烁代码的复杂性隔离在一起。CEF 中的大多数功能都有默认实现,这些实现提供丰富的功能,同时需要用户很少或不需要集成工作。根据本文的发布,全球有超过 1 亿个 CEF 安装实例嵌入到来自各种公司和行业的产品中。使用 CEF 的部分公司和产品列表可在 CEF 维基百科页面上找到。CEF 的一些用例包括:
- 在现有本机应用程序中嵌入符合 HTML5 的 Web 浏览器控件。
- 创建一个轻量级本机"shell"应用程序,该应用程序主要承载使用 Web 技术开发的用户界面。
- 在具有自己的自定义绘图框架的应用程序中呈现 Web 内容"屏幕外"。
- 充当主机,自动测试现有的 Web 属性和应用程序。
5. 编译流程
5.1 进入下载cef网页 https://cef-builds.spotifycdn.com/index.html
我下载的是window64位压缩包
5.2 下载cmake
下载的是可在windows的可执行版cmake。下载完毕后,就一直下一步安装就可以了
5.3 生成cef的vs的sln工程文件。
5.3.1 打开cmake
设置cef资源路径:D:/CEF/cef_binary_86.0.21+g6a2c8e7+chromium-86.0.4240.183_windows64
设置cef生成的工程路径:D:/CEF/cef_binary_86.0.21+g6a2c8e7+chromium-86.0.4240.183_windows64/build
5.3.2 设置cmke配置项
设置编译器版本
设置64位程序
5.3.3 点击generate
显示俩个done则生成成功
5.3.4 查看结果
5.4 编译
1) 打开工程后编译,全部编译编译,cefclient、cefsimple、ceftests编译失败。
2) ceftests编译失败。
CefString markedText("か");替换位CefString markedText(demo");
3)提示编译错误
>mt.exe : general error c101008d: Failed to write the updated manifest to the resource of file "D:/CEF/cef_binary_86.0.21+g6a2c8e7+chromium-86.0.4240.183_windows64/build/tests/cefsimple/Debug/cefsimple.exe". 鏂囦欢鎴栫洰褰曟崯鍧忎笖鏃犳硶璇诲彇銆?
1>D:\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(138,5): error MSB3073: 命令“setlocal
1>D:\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(138,5): error MSB3073: mt.exe -nologo -manifest "D:/CEF/cef_binary_86.0.21+g6a2c8e7+chromium-86.0.4240.183_windows64/tests/cefsimple/cefsimple.exe.manifest" "D:/CEF/cef_binary_86.0.21+g6a2c8e7+chromium-86.0.4240.183_windows64/tests/cefsimple/compatibility.manifest" -outputresource:"D:/CEF/cef_binary_86.0.21+g6a2c8e7+chromium-86.0.4240.183_windows64/build/tests/cefsimple/Debug/cefsimple.exe";#1
1>D:\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(138,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd
1>D:\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(138,5): error MSB3073: :cmEnd
1>D:\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(138,5): error MSB3073: endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
1>D:\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(138,5): error MSB3073: :cmErrorLevel
1>D:\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(138,5): error MSB3073: exit /b %1
解决办法:关闭下图的两个选项后再次编译。
4)代码中将http://www.google.com替换位http://www.baidu.com
6. 查看实例cefsimple.exe效果