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

关于Qt对Html/CSS的支持

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、原生控件
  • 二、QtWebEngine
  • 总结


前言

最近遇到了一些问题需要使用Qt加载Html发现一些特性不能使用,估计很多人也和我一样遇到这种情况。需要说明的是Qt对Html/CSS的支持分为两种:一是原生控件比如QTextBrowser和QTextEdit;二是QtWebEngine也就是网页控件,接下来结合官方文档分别说明下支持度。


一、原生控件

QTextBrowser继承自QTextEdit,两个控件对Html/CSS的支持度是一样的,所以放在一起讲。我们去看下官方文档是如何描述的吧。下面是官方原话,我使用的版本是5.15.2,6.8LTS的描述也是一样的,可以说没有对这一块的支持进行太大的改动。

By default, for a newly-created, empty document, this property contains text to describe an HTML 4.0 document with no body text.

通俗点说QTextEdit的富文本引擎是开发于Html4.0的时代,主要是适配了Html4/CSS2的一个子集,甚至连Html4/CSS2的特性都不是全部支持。

具体支持哪些,官方给出了详细的说明:
richtext-html-subset

一开始我很疑惑,为什么支持程度这么低,直到我集成了QWebEngine我才知道那是有一定的道理的,这个卖个关子,后面再说。

最后:使用控件只需要Gui和Widgets就行了。

二、QtWebEngine

网络引擎解释了为什么原生控件只支持一部分富文本特性,因为网页引擎才是真正的支持Html/CSS。

Qt使用过两个网页引擎,前面的是QtWebKit基于Apple方案,这个后来Qt5之后废弃了,我们现在主流使用的Qt5.15和Qt6+都是基于Chromium 引擎的。这个引擎对于Html5的支持很好,至少支持绝大多数的特性。具体就不一一列出了。

不同版本的QtWebEngine基于不同的Chromium版本,这个可以在你的源代码里看到:

D:\Work\Qt\5.15.2\Src\qtwebengine\src\3rdparty\chromium\chrome\VERSIONMAJOR=83
MINOR=0
BUILD=4103
PATCH=122

总结

最后说一下为什么原生组件只支持部分特性,我觉得应当是以下原因:
1、使用QtWebEngine需要集成一整套的库和资源文件,这个保守估计需要100MB+的额外空间,对于一些简单的程序太说太庞大了。
2、不同的控件各司其职,简单的特性就用简单的控件完成,复杂的页面就用复杂的控件完成,这是一种取舍

http://www.xdnf.cn/news/1584.html

相关文章:

  • 全链路数据仓建设指南:从构建流程到应用场景
  • Vue+Flask豆瓣LSTM影评+推荐算法大数据可视化平台深度学习系统源码
  • 文件上传--WAF绕过干货
  • 【网络入侵检测】基于Suricata源码分析NFQ IPS模式实现
  • Python torchvision.transforms 下常用图像处理方法
  • maven工程中引入外部jar
  • 数据分析之技术干货业务价值​​ powerquery 分组排序后取TOP
  • 《AI大模型应知应会100篇》 第36篇:RAG技术入门:检索增强生成原理及实现
  • 【hadoop】HBase分布式数据库安装部署
  • PyTorch生成式人工智能实战(2)——PyTorch基础
  • 13、性能优化:魔法的流畅之道——React 19 memo/lazy
  • Websocket自动发送消息客户端工具
  • LeetCode每日一题4.24
  • 硬核解析!电动汽车能耗预测与续驶里程的关键技术研究
  • 多模态大模型 Qwen2.5-VL 的学习之旅
  • 立錡科技优化 HDD、LPDDR、SoC 供电的高性能降压转换器
  • 6 种AI实用的方法,快速修复模糊照片
  • 负环-P3385-P2136
  • 让Docker端口映射受Firewall管理而非iptables
  • LVGL在VScode的WSL2中仿真
  • R 语言科研绘图第 41 期 --- 桑基图-基础
  • .NET Framework 4.0可用EXCEL导入至DataTable
  • centos7的环境下ollama 如何卸载
  • 【Linux网络】应用层自定义协议与序列化及Socket模拟封装
  • 第十五届蓝桥杯 2024 C/C++组 拼正方形
  • 深度对比评测:n8n vs Coze(扣子) vs Dify - 自动化工作流工具全解析
  • 详解Linux中的定时任务管理工具crond
  • 基于STM32的汽车主门电动窗开关系统设计方案
  • 系统与网络安全------弹性交换网络(2)
  • Sass的学习