有关这个系列
首先明确一下动机:为什么要用Qt自己实现一个浏览器?
简而言之,就是希望实现一个介于B/S和C/S之间的混合架构,以适应一些前端展示信息需要频繁更新的生产系统。这种混合架构的优势在于:
- 相较于C/S架构,对于需要频繁更新的展示部分,只需要在服务端更新相应的前端文件即可,不需要更新所有的终端软件——这同时也是B/S架构的优势;
- 而传统的B/S架构使用市面上现有的浏览器,无法满足很多生产系统对稳定性的要求;此外,市面上现有的浏览器难以对所在终端的底层系统进行控制;
- 利用Qt的跨平台特性,可以比较容易地实现对不同平台的支持。
这个系列总结了我近两年来对Qt嵌入浏览器实现方法的一些研究。因为最初着手这方面实现时,Qt自带的QWebEngine[1]里尚存在一个比较严重的bug,导致我最终放弃了QWebEngine而使用了同样跨平台的CEF(Chrome Embedded Framework)[2]。现在最新版的Qt已经没有这个问题了,所以这个系列我会介绍两套实现方案,即:
- 使用Qt自家的QWebEngine
- 使用Qt+CEF
注:此系列成文时,使用的Qt版本为5.10
内容索引(不定期更新)
- QWebEngine
1.1 QWebEngineView实现浏览器基本功能
1.2 QWebChannel实现与页面的通信
1.3 QWebEngine与Https - Qt+CEF
2.1 Qt嵌入CEF(上)——实现QCefView控件
2.2 Qt嵌入CEF(下)——CEF入口与QCefView控件的使用
2.3 QCefView实现JS通信接口
2.4 QCefView实现Https双向认证