当前位置: 首页 > article >正文

Qt:QWebEngineView显示网页失败

今天在新电脑搭建qt开发环境,在运行程序时发现通过QWebEngineView显示的html失败,同样的代码在旧电脑上没有这个问题

分析过程

(1)qt出现如下信息提示

[21296:12076:0325/161831.084:ERROR:platform_handle_in_transit.cc(34)] DuplicateHandle failed: 拒绝访问。 (0x5)

这个错误表明 Chromium(QtWebEngine 的底层引擎)在尝试创建进程间通信(IPC)句柄时失败了,通常是由于 权限不足进程冲突 引起的。

可能原因

  • 杀毒软件或防火墙 阻止 QtWebEngineProcess.exe 访问 IPC 句柄。

  • 进程权限问题,可能是以 管理员普通用户 启动,导致 QWebEngineView 的子进程无法正确继承权限。

  • MSVC 运行库问题,如果 QtWebEngine 依赖的 MSVC2017 运行库缺失或损坏,也可能导致这个问题。

(2)分析可能原因一

直接在qt上编译运行源代码,无法显示网页,在任务管理器中搜索QtWebEngineProcess.exe,没有看到该程序在运行。

然后通过windeployqt打包该项目直接运行(没有通过管理员运行),发现网页能正确显示,并且任务管理器能看到 QtWebEngineProcess.exe在运行

直接编译运行项目无法显示网页,而打包后的程序能够正常显示网页,这表明问题可能与 运行时的环境配置资源加载路径 有关。

编译运行 时,QtWebEngine 需要加载特定的资源(如 QtWebEngineProcess.exe 等)。这些资源通常与程序的可执行文件分开,在打包后,这些资源被正确地包含在安装包中,因此能正常工作,而在开发环境中,可能由于路径配置不正确或某些资源缺失,导致无法加载网页。

所以要解决网页无法显示的问题,需要解决QtWebEngine 依赖资源路径问题

chatgpt给出的关于“解决QtWebEngine 依赖资源路径问题”解决方案如下:

  1. 确保 QtWebEngine 依赖文件被正确加载

    • 在开发模式下运行时,QtWebEngineProcess.exe 和其他 QtWebEngine 资源需要位于程序的可执行文件同级目录,或者设置为在 Qt 配置文件中指定的正确路径。

    • 你可以检查程序输出目录中是否包含 QtWebEngine 相关的 DLL 和进程文件。

然后自己先尝试通过配置qt的环境变量,但是发现没有起作用。最后通过以下方式来确保qt在运行时将QtWebEngine 所需的资源都能正确加载:

使用 windeployqt 工具:

  • Qt 提供了 windeployqt 工具,可以自动将应用程序所需的 Qt 库和插件复制到可执行文件目录。​

  • 在命令行中,导航到可执行文件所在的目录,运行以下命令:

  • windeployqt your_application.exe

  • 这将自动将所有必需的 Qt 库和插件复制到当前目录。

总结:QWebEngineView显示网页失败的根本原因在于在qt运行时 QtWebEngine 所需的资源没有被正确加载,因为本人还没去深入了解使用QWebEngineView显示网页的全流程,可能是因为缺少了一个正式的添加 webenginewidgets模块的步骤导致所需资源没能被正确加载,因此只能通过这种方式手动添加资源到编译路径的exe同级目录下。


http://www.kler.cn/a/612513.html

相关文章:

  • Android 底部EditView输入时悬浮到软键盘上方
  • 无人机产教融合新方向,装调检修技术详解
  • 前缀和、差分
  • C语言--文件操作教案
  • Mybatis缓存模块分析-源码
  • C# SerialPort 类中清空缓存区的方法
  • 如何使用腾讯云HAI快速、高质量生成Stable Diffusion图片
  • vmwaretools解压失败|vmware tools distrib cannot mkdir read only file system|bug汇总
  • 2025年渗透测试面试题总结-某奇安信-Ateam(题目+回答)
  • Oracle初识:登录方法、导入dmp文件
  • Qt弹出新窗口并关闭(一个按钮)
  • JVM 概述/结构/架构/生命周期
  • 短信验证码安全需求设计
  • C语言 【实现电脑关机小游戏】非常好玩
  • 【Zookeeper搭建】Zookeeper分布式集群搭建完整指南
  • git中feature跟hotfix是什么意思
  • Python定时任务的高效实现:精准触发mutoubar()方法
  • Golang Beego SQL链式查询(包含Join关联)
  • 使用 Docker 18 安装 Eureka:解决新版本 Docker 不支持的问题
  • 【漫话机器学习系列】159.单位阶跃激活函数(Unit-Step Activation Function)