【QT】Qt5 QtWebEngine使用教程

news2025/4/6 11:52:13

目录

      • 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.coloradmin.cn/o/2329197.html

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

相关文章

03.unity开发资源 获取

03.unity开发资源 获取 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是Python基础语法。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性&#xff0c;希望对您有用~ unity简介-unity基础 第三节 &#xf…

OpenCV界面编程

《OpenCV计算机视觉开发实践&#xff1a;基于Python&#xff08;人工智能技术丛书&#xff09;》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 OpenCV的Python开发环境搭建(Windows)-CSDN博客 OpenCV也支持有限的界面编程&#xff0c;主要是针对窗口、控件和鼠标…

【leetcode】记录与查找:哈希表的题型分析

前言 &#x1f31f;&#x1f31f;本期讲解关于力扣的几篇题解的详细介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话不…

AntDesign下,Select内嵌Menu标签,做一个多选下拉框,既可以搜索,还可以选择下拉项

话不多说&#xff0c;直接上效果和代码 效果图一&#xff1a; 效果图二&#xff1a; renderAddStyleOption (item: any) > {const { value } this.props;const { currentSelectedOptionIds, currentStyleId } this.state;const styleSettings value?.styleSettings;c…

css炫酷的3D水波纹文字效果实现详解

炫酷的3D水波纹文字效果实现详解 这里写目录标题 炫酷的3D水波纹文字效果实现详解项目概述技术栈核心实现1. 基础布局2. 渐变背景3. 文字效果实现3.1 基础样式3.2 文字漂浮动画 4. 水波纹效果4.1 模糊效果4.2 水波动画 5. 交互效果 技术要点项目难点与解决方案总结 项目概述 在…

P1036 [NOIP 2002 普及组] 选数(DFS)

题目描述 已知 n 个整数 x1​,x2​,⋯,xn​&#xff0c;以及 1 个整数 k&#xff08;k<n&#xff09;。从 n 个整数中任选 k 个整数相加&#xff0c;可分别得到一系列的和。例如当 n4&#xff0c;k3&#xff0c;4 个整数分别为 3,7,12,19 时&#xff0c;可得全部的组合与它…

后端思维之高并发处理方案

前言 在互联网时代&#xff0c;高并发已经成为后端开发者绕不开的话题。无论是电商平台的秒杀活动、抢购系统&#xff0c;还是社交应用的高频互动&#xff0c;高并发场景的出现往往伴随着巨大的技术挑战。 如何在流量激增的同时&#xff0c;确保系统稳定运行、快速响应&#xf…

14.2linux中platform无设备树情况下驱动LED灯(详细编写程序)_csdn

我尽量讲的更详细&#xff0c;为了关注我的粉丝&#xff01;&#xff01;&#xff01; 因为这跟之前的不一样&#xff0c;提出来驱动的分离和分层。 提到驱动分离和分层&#xff0c;必然可以联系上一章咱们知道的驱动-总线-设备。 在无设备树的状态下&#xff0c;必然要写寄存…

K8s的BackUP备份

文章目录 1、kubeadm 安装的单 master 节点数据备份和恢复方式2、Velero 工具3、Velero 服务部署4、备份还原数据 ETCD备份/还原有多种类型&#xff0c;取决于你 k8s 集群的搭建方式 1、kubeadm 安装的单 master 节点数据备份和恢复方式 拷贝 etcdctl 至 master 节点&#xf…

Ruoyi-vue plus 5.2.2 flowble设计流程点击开始流程图错误

网关设置条件或者是事件删除后出现&#xff0c;点击网关节点无法找到下面的事件节点。 配置页面事件错误&#xff0c;点背景配置进去了事件&#xff0c;发现再次加载&#xff0c;或者删除的时候VUE页面无法加载。 解决方式&#xff1a;查看XML文件&#xff0c;这个节点是否存在…

如何快速入门物联网单片机开发?

背景 物联网单片机硬件开发涉及多个阶段&#xff0c;元器件是否“自己设计”取决于具体需求。以下是详细解答和学习方案&#xff1a; 一、元器件是否自己设计&#xff1f; 通用元器件&#xff1a; 大多数情况下&#xff0c;开发者直接使用现成的标准化元器件&#xff08;如电阻…

在 .NET 8 中使用自定义令牌身份验证掌握 SignalR Hub 安全性

最近在练习做一个 Web 开发项目&#xff0c;需要使用 WebSockets 传输数据&#xff0c;实现实时通信。这是一个 React.js 项目&#xff0c;后端是 .NET。 虽然 MSDN 提供了出色的顶级文档&#xff0c;但它通常缺少高级用例所需的低级细节。 一种这样的场景是使用自定义令牌对…

基于springboot+vue的二手车交易系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

React安装使用教程

ReactAnt Designrouteraxios安装完整教程 官网&#xff1a;React Native 中文网 使用React来编写原生应用的框架 一&#xff0c;安装 npx create-react-app my-app npm start npm eject 暴露项目优先提交代码 git add . git commit -m “搭建项目“ 4.yarn add node-sass …

Day20 -自动化信息收集工具--ARL灯塔的部署

准备&#xff1a; 纯净的Docker环境 ARL的包 一、Docker的部署 00x1 更新系统包 sudo apt update 00x2 安装必要的依赖包 sudo apt install -y apt-transport-https ca-certificates curl software-properties-common 00x3 下载docker和docker-compose apt-get install do…

精品可编辑PPT | “新基建”在数字化智慧高速公路中的支撑应用方案智慧建筑智慧交通解决方案施工行业解决方案

本文详细阐述了“新基建”在数字化智慧高速公路中的支撑应用方案&#xff0c;从政策背景出发&#xff0c;指出国家在交通领域的一系列发展规划和指导意见&#xff0c;强调了智慧交通建设的重要性。分析了当前高速公路存在的问题&#xff0c;如基础感知设施不足、协同水平低、服…

【瑞萨 RA-Eco-RA2E1-48PIN-V1.0 开发板测评】PWM

【瑞萨 RA-Eco-RA2E1-48PIN-V1.0 开发板测评】PWM 本文介绍了瑞萨 RA2E1 开发板使用内置时钟和定时器实现 PWM 输出以及呼吸灯的项目设计。 项目介绍 介绍了 PWM 和 RA2E1 的 PWM 资源。 PWM 脉冲宽度调制&#xff08;Pulse Width Modulation, PWM&#xff09;是一种对模拟…

数据流和重定向

1、数据流 不管正确或错误的数据都是默认输出到屏幕上&#xff0c;所以屏幕是混乱的。所以就需要用数据流重定向将这两 条数据分开。数据流重定向可以将标准输出和标准错误输出分别传送到其他的文件或设备去 标准输入&#xff08;standard input&#xff0c;简称stdin&#xff…

【GPT入门】第33 课 一文吃透 LangChain:chain 结合 with_fallbacks ([]) 的实战指南

[TOC](【GPT入门】第33课 一文吃透 LangChain&#xff1a;chain 结合 with_fallbacks ([]) 的实战指南) 1. fallback概述 模型回退&#xff0c;可以设置在llm上&#xff0c;也可以设置在chain上&#xff0c;都带有with_fallbacks([])函数 2. llm的回退 2.1 代码 核心代码&…

【51单片机】2-7【I/O口】点亮数码管

1.硬件 51最小系统数码管模块 2.软件 静态数码管 #include "reg52.h" //头文件 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8;sbit LSAP2^2;//位选 sbit LSBP2^3; sbit LSCP2^4;u8 code smgduan[17]{0x3f,0x06,0x5b,0x4f,0…