关于Qt对Html/CSS的支持

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

文章目录


前言

最近遇到了一些问题需要使用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版本,这个可以在你的源代码里看到:

bash 复制代码
D:\Work\Qt\5.15.2\Src\qtwebengine\src\3rdparty\chromium\chrome\VERSION

MAJOR=83
MINOR=0
BUILD=4103
PATCH=122

总结

最后说一下为什么原生组件只支持部分特性,我觉得应当是以下原因:

1、使用QtWebEngine需要集成一整套的库和资源文件,这个保守估计需要100MB+的额外空间,对于一些简单的程序太说太庞大了。

2、不同的控件各司其职,简单的特性就用简单的控件完成,复杂的页面就用复杂的控件完成,这是一种取舍

相关推荐
zhmhbest9 分钟前
Qt 全球峰会 2025:中国站速递 —— 技术中立,拥抱更大生态
开发语言·qt·系统架构
咋吃都不胖lyh44 分钟前
.docx 和 .doc 是 Microsoft Word 文档的两种主要文件格式
前端·html·xhtml
3秒一个大2 小时前
HTML5 敲击乐应用:从代码到交互的完整实现
html
冷亿!3 小时前
Html爱心代码动态(可修改内容+带源码)
前端·html
feiyangqingyun3 小时前
Qt实时绘制飞行轨迹/移动轨迹实时显示/带旋转角度/平滑移动/效果一级棒/地面站软件开发/无人机管理平台
qt·无人机·集群地面站
universe_014 小时前
前端学习css
前端·css·学习
程序猿_极客5 小时前
【期末网页设计作业】HTML+CSS+JavaScript 猫咪主题网站开发(附源码与效果演示)
前端·css·html·课程设计·网页设计作业
十五年专注C++开发6 小时前
Qt-VLC: 一个集成VLC的开源跨平台媒体播放库
开发语言·qt·媒体·libvlc·vlc-qt
JackieDYH6 小时前
CSS实现跑马灯效果-案例
前端·css·css3
BBB努力学习程序设计6 小时前
简易横向导航制作指南
前端·html