QT 应用程序中集成浏览器

QT 应用程序中集成浏览器

前言

在很多情况下,我们需要在应用程序中集成浏览器,比如应用程序界面是使用 H5 页面开发,或者我们的应用程序需要访问 Web 网站。

应用程序中集成浏览器,并不一定是需要一个具有地址栏、多标签等全功能的浏览器,大多数情况下只是需要一个能够现实 H5 页面的浏览器外壳。

在 QT 应用程序中集成浏览器,最简单的方法是使用 QtWebEngine。

QtWebEngine 是 Qt 框架中的一个模块,用于在应用程序中集成现代 Web 技术。它基于 Chromium 开源项目,提供了一个用于显示 Web 内容的浏览器引擎,使开发者能够在他们的 Qt 应用程序中嵌入 Web 内容和功能。QtWebEngine 提供了一个易于使用的 API,开发者可以使用它来创建具有 Web 功能的应用程序,如浏览器、HTML5 游戏、在线帮助系统等。QtWebEngine 允许开发者在应用程序中直接使用 HTML、CSS、JavaScript 等 Web 技术,同时提供了与 Qt 框架的无缝集成,使开发者能够轻松管理和控制 Web 内容的展示和行为。

但是,QtWebEngine 模块基于的 Chromium 版本比较老,并没有随着 Chromium 项目快速迭代。比如我们使用的 Qt 5.15.2 中的 QtWebEngine 模块使用的是 Chromium 78 版本,而最新的 Chromium 版本已经到了 121。大多数情况下我们不需要跟进最新版本,但如果应用程序所访问的网站使用了最新的前端技术,那么 QtWebEngine 可能会出现一些显示异常的问题。

虽然 QtWebEngine 和 Chromium 都是开源的,但这两个项目都相当庞大,要升级到最新的 Chromium 版本,难度和工作量都相当大。

我们还有第二种选择,就是使用 CEF 框架。

CEF (Chromium Embedded Framework) 是一个开源项目,它允许开发者在自己的应用程序中嵌入 Chromium 浏览器引擎。它基于 Google 的 Chromium 项目,提供了一个稳定的、高性能的、现代的浏览器引擎,开发者可以通过 CEF 将其集成到自己的桌面应用程序中。

CEF 的优势之一是它提供了灵活的自定义和扩展性。开发者可以通过添加自定义的 JavaScript 扩展或使用 Chromium 的内置 API 来扩展和定制浏览器的功能。此外,CEF 还提供了一套丰富的 API,用于控制浏览器的行为、处理用户输入、管理 Web 内容等方面。

和 QtWebEngine 不同之处在于,CEF 采用了滚动发布策略,其主要特点包括:

  1. 持续更新: CEF 通过持续不断地将 Chromium 的最新代码集成到其代码库中,实现持续更新。这意味着 CEF 的开发者可以随时访问和使用最新的 Chromium 特性和改进。

  2. 频繁发布: CEF 以较短的周期发布新版本,通常每周或每两周发布一个新版本。这使得开发者能够更快地获得最新的功能、性能改进和安全补丁。

  3. 版本稳定性: 尽管采用了持续更新和频繁发布的策略,CEF 仍然会在每个版本中进行测试和验证,以确保版本的稳定性和可靠性。

  4. 向后兼容: CEF 的滚动发布策略通常会保持向后兼容性,即在新版本中引入的改进和功能不会破坏现有的应用程序或功能。

在 QT 应用程序中集成 CEF,可以获得较新的 Chromium 内核,升级 Chromium 版本也相对容易一些。

相关推荐
神仙别闹4 小时前
基于QT(C++)实现学本科教务系统(URP系统)
数据库·c++·qt
南棱笑笑生5 小时前
20251217给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-5.10】后调通ov5645【只能预览】
linux·c语言·开发语言·rockchip
谁动了我的代码?6 小时前
QT<34> 利用线程池处理耗时任务以及回调函数的使用
开发语言·qt
Sleepy MargulisItG6 小时前
【Linux网络编程】应用层协议:HTTP协议
linux·服务器·网络·http
G31135422736 小时前
Linux 内核设计中的核心思想与架构原则
linux·架构·php
zhuzewennamoamtf6 小时前
Linux内核platform抽象、数据结构、内核匹配机制
linux·运维·数据结构
Kira Skyler8 小时前
ELF文件解析 elf.o 文件主要内容.md
linux
木心爱编程8 小时前
【Qt 5.14.2 新手实战】QTC++入门筑基——按钮与标签联动:QPushButton + QLabel 实现图片切换器
java·c++·qt
逐梦吧!旅行者8 小时前
Linux MySQL 5.7用户管理与用户密码的设置问题
linux·mysql
RisunJan8 小时前
Linux命令-grpck命令(验证和修复组配置文件(`/etc/group` 和 `/etc/gshadow`)完整性的工具)
linux·运维·服务器