【QT】Qt5 QtWebEngine使用教程

目录

      • 1、QtWebEngine相比于QtWebKit的优势
      • 2、项目配置
        • 2.1 确认 Qt 版本
        • 2.2 在.pro 文件中添加依赖
      • 3、显示网页
      • 4、实现Qt和网页JavaScript之间的交互
        • 4.1 Qt执行网页的JavaScript代码
        • 4.2 JavaScript调用Qt对象的函数


  QtWebEngine 是 Qt 框架中用于在应用程序中嵌入 Web 内容的模块,它基于 Chromium 开源项目。从 Qt 5.6 开始,QtWebKit 被弃用,改用 QtWebEngine。

1、QtWebEngine相比于QtWebKit的优势

  • 现代渲染引擎:
    • QtWebEngine:基于 Chromium 开源项目,采用 Blink 渲染引擎。Blink 是一个现代且高性能的渲染引擎,广泛应用于 Chrome 等主流浏览器中。它在渲染速度、页面布局准确性以及对最新 Web 标准(如 HTML5、CSS3 和 JavaScript 新特性)的支持上表现出色。这使得使用 QtWebEngine 的应用程序能够快速、准确地呈现复杂的网页内容,为用户提供流畅的浏览体验。
    • QtWebKit:使用的 WebKit 渲染引擎在发展过程中逐渐落后于 Blink。随着 Web 技术的快速发展,WebKit 在处理一些新的 Web 标准和复杂页面时,性能和兼容性方面的问题逐渐显现。
  • 多进程架构:
    • QtWebEngine:得益于 Chromium 的多进程架构设计。这种架构将网页的不同部分(如渲染进程、插件进程等)分离到不同的进程中运行。这样一来,如果某个网页内容(如一个有问题的 JavaScript 脚本或插件)出现崩溃,不会影响整个应用程序的稳定性,只会终止相关的进程,而应用程序的其他部分仍可正常运行。同时,多进程架构还能更好地利用多核 CPU 的性能,提升整体渲染和处理效率。
    • QtWebKit:通常采用单进程架构,一旦网页内容出现错误,很可能导致整个应用程序崩溃,稳定性较差。而且单进程架构在资源利用和性能提升方面存在一定局限。
  • 安全沙箱机制:
    • QtWebEngine:继承了 Chromium 的安全沙箱机制。沙箱对网页内容的运行环境进行严格限制,阻止网页代码对本地系统资源进行非法访问,如访问敏感文件、执行恶意脚本等。这种机制大大增强了应用程序的安全性,降低了因网页内容导致的安全威胁。
    • QtWebKit:虽然也有一定的安全措施,但相比之下,其沙箱机制不够完善,在防止网页内容对本地系统的潜在攻击方面,不如 QtWebEngine 有效。

2、项目配置

2.1 确认 Qt 版本

  QtWebEngine 从 Qt 5.6 开始成为 Qt 的一部分。确保你使用的 Qt 版本支持该模块。并确认在安装 Qt 时安装了 QtWebEngine 模块,可以通过 Qt 的 MaintenanceTool.exe 工具查看是否安装。

2.2 在.pro 文件中添加依赖

  在你的 Qt 项目的 .pro 文件中添加 QT += webenginewidgets webchannel。

3、显示网页

  QtWebEngine 模块的 QWebEngineView 相当于 QtWebKit 模块的 QWebView,在函数接口上类似。

  • 使用 QWebEngineView 的 load 函数加载网页或html文件。如下所示:

    #include <QApplication>
    #include <QWebEngineView>int main(int argc, char *argv[])
    {QApplication a(argc, argv);QWebEngineView view;view.load(QUrl("http://www.example.com"));view.show();return a.exec();
    }
    
  • 使用 QWebEngineView 的 setHtml 函数可以直接加载显示 html 文本,一般用于简单显示 html 超文件。示例如下:

    #include <QApplication>
    #include <QWebEngineView>int main(int argc, char *argv[])
    {QApplication a(argc, argv);QWebEngineView view;QString html = "<html><body><h1>Hello, QtWebEngine!</h1></body></html>";view.setHtml(</

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/74850.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全-等级保护(等保) 1-0 等级保护制度公安部前期发文总结

################################################################################ 等级保护从1994年开始已经有相关文件下发&#xff0c;进行建设&#xff0c;后续今年多年制度完善&#xff0c;现在已进入等保2.0时代&#xff0c;相关政策已运行多年。 前期等保相关发文&…

视图函数的应用

1.实现将当前日期和时间编码为HTML文档并返回的简单视图函数 文章目录 1.实现将当前日期和时间编码为HTML文档并返回的简单视图函数1.1打开visualcode 按图示点击 创建新的终端1.2然后定义ViewDjango项目根目录下的路由文件urls.py&#xff0c;实现到SimpleView应用的路由路径1…

解锁 C 语言安全新姿势:C11 安全函数全解析

一、开篇:C 语言安全的新护盾 在 C 语言的编程世界里,缓冲区溢出等安全问题犹如潜藏的暗礁,时刻威胁着程序的稳定与安全。为了有效应对这些挑战,C11 标准引入了一系列安全函数,也被称为 “Annex K” 标准库函数。这些函数为字符串和内存操作函数注入了新的活力,通过增加…

BGP路由协议之属性2

Orgin 起源 公认必遵属性 起源名称标记描述IGPi如果路由是由始发的 BGP 路由器使用 network 命令注入到 BGP 的&#xff0c;那么该 BGP 路由的 origin 属性为 IGPEGPe如果路由是通过 EGP 学习到的&#xff0c;那么该 BGP 路由的 Origin 属性为 EGPIncomplete?如果路由是通过…

C#实现HiveQL建表语句中特殊数据类型的包裹

用C#实现搜索字符串中用’(‘和’)‘包裹的最外层的里面里面的字符串&#xff0c;将里面的记录按一个或多个空格、换行或tab&#xff0c;或者是它的在一起的组合作为分隔&#xff0c;分隔出多个字符串组&#xff0c;如果组中有字符串中同时包含’<‘和’>’&#xff0c;则…

脑电学习笔记

一&#xff0c;原理简介 使用eprime或者matlab给被试呈现刺激&#xff0c;并在某个时间发送Mark&#xff0c;脑电帽会同步采集被试的脑电信号&#xff0c;经放大器放大后&#xff0c;控制盒会把脑电信号和mark 信号同步到一起&#xff0c;通过usb线传入到采集系统&#xff08;比…

宏碁笔记本电脑擎7PRO搭载的 NVIDIA RTX 5080 显卡安装pytorch

宏碁笔记本电脑擎7PRO搭载的 NVIDIA RTX 5080 显卡是一款高性能移动 GPU&#xff0c;基于 NVIDIA 最新的 Blackwell 架构设计&#xff0c;通过修正架构&#xff08;Blackwell&#xff09;、显存类型与带宽&#xff08;GDDR7、960GB/s&#xff09;、Tensor Core 与 RT Core 全面…

ES6中增强对象

在 ES6 中&#xff0c;对象的使用变得更加方便了&#xff0c;可以在定义对象时通过属性简写、遍历作为属性名或省略对象函数属性的书写等方式来提高编码的效率&#xff1a; 其实就这么简单&#xff0c;大家可以好好看下上面的代码&#xff0c;有问题欢迎留言一起探讨&#xff0…

XSLFO XSLT:深入解析两种强大的XML转换技术

XSLFO & XSLT:深入解析两种强大的XML转换技术 引言 在XML(可扩展标记语言)的生态系统中,XSLFO(可扩展样式表语言格式化对象)和XSLT(可扩展样式表转换语言)是两种非常强大的技术。它们分别负责将XML文档转换为其他格式以及进行XML文档的转换。本文将深入探讨这两种…

Django4.0的快速查询以及分页

1. filter 方法 filter 是 Django ORM 中最常用的查询方法之一。它用来根据给定的条件过滤查询集并返回满足条件的对象。 articles Article.objects.all() # 使用 SearchFilter 进行搜索 search_param request.query_params.get(search, None) author_id request.query_pa…

在Vue3中格式化后端返回的Java Date类型数据为指定格式

在前端Vue3项目中&#xff0c;格式化后端返回的java.util.Date类型时间到yyyy-MM-dd HH:mm:ss格式&#xff0c;有几种常用方法&#xff1a; 方法一&#xff1a;使用JavaScript内置方法 <JAVASCRIPT> // 假设后端返回的数据结构为 { createTime: 2023-05-15T08:30:00.0…

单元测试原则之——不要模拟不属于你的类型

在单元测试中,不要模拟不属于你的类型(Don’t mock types you don’t own)是一个重要的原则。这是因为外部库或框架的类型(如第三方依赖)可能会在未来的版本中发生变化,而你的模拟可能无法反映这些变化,从而导致测试失效。 以下是一个基于Java Mockito 的示例,展示如何…

内网渗透(杂项集合) --- 中的多协议与漏洞利用技术(杂项知识点 重点) 持续更新

目录 1. NetBIOS 名称的网络协议在局域网中内网渗透中起到什么作用 2. 使用 UDP 端口耗尽技术强制所有 DNS 查找失败&#xff0c;这个技术如何应用在局域网内网渗透测试中 3. 在本地创建一个 HTTP 服务来伪造 WPAD 服务器 什么是 WPAD 服务器&#xff1f;这个服务器是干嘛的…

Git相关笔记1 - 本地文件上传远程仓库

Git相关笔记 目录 Git相关笔记Git上传相关文件第一步创建一个仓库&#xff1a;第二步本地创建空文件夹&#xff1a;第三步开始在gitbush上传文件&#xff1a;解决外网网络连接的问题&#xff1a;中文文件的编码问题&#xff1a;参考资料 Git上传相关文件 第一步创建一个仓库&a…

Cocos Creator 进行 Web 发布后,目录结构解析

在使用 Cocos Creator 进行 Web 发布后&#xff0c;生成的目录结构通常包含以下内容&#xff0c;下面为你详细介绍&#xff1a; 1. index.html 这是 Web 项目的入口 HTML 文件&#xff0c;它会加载所需的 JavaScript 文件和资源&#xff0c;从而启动游戏或应用程序。示例代码…

C++20的协程简介

C20 引入了协程&#xff08;Coroutines&#xff09;&#xff0c;这是一种特殊的函数&#xff0c;它可以暂停执行并在之后恢复&#xff0c;而不是像普通函数那样一旦返回就终止。协程的主要特点在于它能保留自身的执行状态&#xff0c;这让异步编程更加简洁和直观。以下是对 C20…

通过ansible+docker-compose快速安装一主两从redis+三sentinel

目录 示例主机列表 架构参考 文件内容 安装脚本 ansible变量&#xff0c;需修改 ansible配置文件和主机清单&#xff0c;需修改 运行方式 验证故障转移master 涉及redis镜像和完整的脚本文件 示例主机列表 架构参考 文件内容 安装脚本 #!/bin/bashset -e export pa…

Apache Arrow 使用

下述操作参考 Building Arrow C — Apache Arrow v20.0.0.dev267 安装依赖组件 sudo apt-get install \build-essential \ninja-build \cmake 下载源码 git clone --recursive --shallow-submodules gitgithub.com:apache/arrow.git 配置 创建build目录并且进入 mkdir a…

玩转大语言模型——使用华为官方MindIE-Server镜像方式部署DeepSeek模型

系列文章目录 玩转大语言模型——使用langchain和Ollama本地部署大语言模型 玩转大语言模型——三分钟教你用langchain提示词工程获得猫娘女友 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型—…

MCP项目开发-一个简单的RAG示例

MCP项目开发-一个简单的RAG示例 前言 前言 客户端是基于官网的例子改的&#xff0c;模型改成了openai库连接仅仅使用基础的RAG流程作为一个演示&#xff0c;包含了以下步骤 query改写搜索&#xff1a;使用google serper重排序&#xff1a;使用硅基流动的api 大模型api也使用…