Qt + CEF3 环境搭建

时间:2024-03-20 17:53:43

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位压缩包

Qt + CEF3 环境搭建

5.2 下载cmake

下载的是可在windows的可执行版cmake。下载完毕后,就一直下一步安装就可以了

Qt + CEF3 环境搭建

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

Qt + CEF3 环境搭建

5.3.2 设置cmke配置项

设置编译器版本

设置64位程序

Qt + CEF3 环境搭建

5.3.3 点击generate

显示俩个done则生成成功

Qt + CEF3 环境搭建

5.3.4 查看结果

Qt + CEF3 环境搭建

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

解决办法:关闭下图的两个选项后再次编译。

Qt + CEF3 环境搭建

4)代码中将http://www.google.com替换位http://www.baidu.com

6. 查看实例cefsimple.exe效果

Qt + CEF3 环境搭建