QT_QWebEngineView_自制浏览器_01

0 .需求

  • 打开固定的站点网页,并能够正常浏览
  • 能打开本地的单页面HTML5应用(Vue),能够跨域发送Ajax请求到API接口获取数据
  • 拦截所有HTTP请求,请求发送之前添加自定义的请求头
  • JavaScript 与本地代码相互通信

比较简单的方案是 Electron, 使用 JavaScript, HTML 和 CSS 等 Web 技术创建原生程序的框架。它可以完美解决上面所有问题。但是用它打包出来的应用体积过大。

这里本着学习的态度,使用QT中的 QWebEngineView 来实现上面的需求。它与Electron一样,是基于Chromium引擎的,也就是集成谷歌的引擎。看看如何使用QT 来打造一个自己定制的浏览器外壳,加载自己的web应用,解决浏览器兼容的尴尬问题。

有了这个外壳,就可以用 HTML+CSS+JavaScript 来编写应用界面,而且还可以与操作系统通信。

1. 环境准备

QWebEngineView 只支持 MSVC编译器,mingw不支持。我安装的组件:
在这里插入图片描述
在QT安装目录/msvc2019_64/include 目录中 能够找到 QtWebEngineWidgets 这个文件夹,这说明可以使用msvc2019 来开发这个自定义的浏览器。

安装一个 Visual Studio Professional 2019 ,不用全部安装,只需要安装 “使用C++的桌面开发”:
在这里插入图片描述

2. QWebEngineView 类

查看该类的文档说明:

Header:#include
qmake:QT += webenginewidgets
Since:Qt 5.4
Inherits:QWidget

它是一个QWidget,可以查看和编辑网页内容,它提供了一个load方法可以加载url。

3. 最简单的浏览器

新建项目,整个项目只有两个文件

  • MyBrowser.pro 工程文件
  • main.cpp 入口

3.1 引入库

MyBrowser.pro 文件中加入 webenginewidgets 库

QT       += core gui webenginewidgets

3.2 main.cpp

#include <QApplication>
// 引入头文件
#include <QWebEngineView>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    // 浏览器窗体对象
    QWebEngineView w;
    // 加载CSDN首页
    w.load(QUrl("https://www.csdn.net"));
    w.resize(1024,768);
    w.setWindowTitle("自定义浏览器");
    w.show();
    return a.exec();
}

使用Debug启动
在这里插入图片描述
发现了两个问题:

  1. 标题出现了乱码
  2. 加载网页非常缓慢

3.3 解决中文问题

在main.cpp 源代码文件中加入 预编译指令。

#pragma execution_character_set("utf-8")

每次敲入这段代码很麻烦,可以在 QT Creater 开发工具内配置代码片段:

工具=》选项=》文本编辑器=》片段=》组,选择C++。

点击右侧的“添加”按钮,在左侧表格中新增了空白行
在这里插入图片描述
代码中输入 encode,然后tab就直接输入了。

main.cpp完整代码如下:

#pragma execution_character_set("utf-8")
#include <QApplication>
// 引入头文件
#include <QWebEngineView>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    // 浏览器窗体对象
    QWebEngineView w;
    // 加载CSDN首页
    w.load(QUrl("https://www.csdn.net"));
    w.resize(1024,768);
    w.setWindowTitle("自定义浏览器");
    w.show();
    return a.exec();
}

3.4 加载网页缓慢

在debug模式下,会看到大量的日志输出。切换成 Release 模式后,输出日志减少,加载速度明显提升。
在这里插入图片描述

3.5 点击链接跳转问题

还有一个问题是:当点击页面链接的时候,页面并没有正常跳转,这个问题下个章节通过封装QWebEngineView 来解决。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

paopao_wu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值