我知道 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 中有效,因为这使它们符合自定义元素规范 (详细信息)。