我知道 Qt QTextDocument和 Qt QML Text 类型支持一组支持的标签和支持的 CSS 属性,形成 HTML 4 的子集。
但是有什么方法可以扩展我可以使用的标签吗?例如,当我想呈现自定义 XML 而不首先将其转换为 HTML 时(通过Qt 的 XSL-T或其他方式)。或者类似地,当我想直观地实现 Qt 的 HTML 4 子集尚不支持的元素时。
我知道 Qt QTextDocument和 Qt QML Text 类型支持一组支持的标签和支持的 CSS 属性,形成 HTML 4 的子集。
但是有什么方法可以扩展我可以使用的标签吗?例如,当我想呈现自定义 XML 而不首先将其转换为 HTML 时(通过Qt 的 XSL-T或其他方式)。或者类似地,当我想直观地实现 Qt 的 HTML 4 子集尚不支持的元素时。
确实可以,尽管这是未记录的行为,并且您应该意识到风险(例如,这种行为可能会在未来的 Qt 版本中消失)。基本上,您可以使用任何您想要的标签名称,并使用可用的 CSS 属性设置它们的样式。我用 Qt 5.12 对此进行了测试。
使用您可以在 QML Text 中尝试的文档进行演示(以及扩展的 QTextDocument,尽管我没有明确测试):
<html>
<head>
<style>test-tag { font-weight: bold; }</style>
</head>
<body>
<test-tag>Hello Test Tag!</test-tag>
</body>
</html>
很酷
如果您使用包含破折号“ -
”字符的标签名称,您的自定义标签甚至是有效的 HTML5,符合自定义元素规范(详细信息)。