svgtoqml
svgtoqml
是一个随 Qt 提供的命令行工具,可将 SVG 文档转换为 QML 文件。然后,该 QML 文件可用作 应用程序中的组件。Qt Quick 天气预报示例包括多个使用该工具生成的 QML 文件。
概述
svgtoqml
可将 SVG 文件转换为使用Qt Quick 基元的 QML 文件。由于Qt Quick 支持可缩放矢量图形,因此生成的项目将尽可能平滑转换。作为基线,该工具支持 SVG Tiny 1.2 配置文件的大部分静态功能。根据具体情况,还支持某些附加功能。不支持交互式功能和动画。
使用方法
svgtoqml
的基本用法是提供一个输入文件和一个输出文件:svgtoqml input.svg output.qml
。它将读取input.svg
文件,并将其转换为output.qml
中相应的Qt Quick 场景,然后将其用作Qt Quick 应用程序的一部分。
此外,它还支持以下选项:
选项 | 选项 |
---|---|
-版权声明 <string | 在生成文件的开头添加 <string> 作为注释。 |
-c、-曲线渲染器 | 为 Qt Quick Shapes.这样就能在场景中生成平滑的反锯齿形状,而无需多重采样,但需要额外的成本。 |
-p,优化路径 | 在将路径提交到 QML 文件之前对路径进行优化,这样可能会加快路径的加载和渲染速度。 |
-轮廓-描边模式 | 描边填充形状的轮廓,而不是原始路径。 |
-t,-类型名称 <字符串 | 输出将使用类型名称 <string> 代替Shape 。使用自定义项可以覆盖Shape 项的默认行为。 |
-v, -view | 显示即将生成的Qt Quick 项目的预览。 |
与其他选项比较
在Qt Quick 中包含 SVG 内容有多种选项。下面将概述svgtoqml
在其中的位置。
与Qt SVG
Qt SVG是一个为 SVG 文件提供解析器和软件渲染器的模块。此外,它还包括一个图像加载器插件,这样就可以通过Qt Quick 中的Image 元素直接加载 SVG 文件。然后,SVG 将被光栅化,并以指定的大小缓存起来,重新绘制的成本很低。但是,如果放大图像而不出现像素化现象,就需要以不同的尺寸重新加载图像,这反过来又会很昂贵。
svgtoqml
(而 组件)则是呈现相同内容的替代方法。一旦加载到 ,就可以更改变换,同时保留在 GPU 内存中渲染场景所需的几何体数据。因此,只需很少的开销,就能以不同的比例重新绘制矢量图像。VectorImage Qt Quick
不过,如果图像大小在应用程序的生命周期内不会改变,那么以Image 的形式加载 SVG 将更为高效。在这种情况下,如果 SVG 总是以一小部分可能的尺寸渲染,可以考虑预先将其栅格化为加载效率更高的图像格式,如PNG
。
与 VectorImage 的比较
VectorImage 组件提供了与svgtoqml
相同的基本功能,但它不是以 QML Runtime 文件的形式预先生成Qt Quick 场景,而是在运行时创建场景。这样就可以在构建时加载未提供的 SVG 文件,从而提高了灵活性。使用svgtoqml
预生成场景可在加载前优化场景。因此,对于在构建时可用的文件,svgtoqml
是首选。
与 PathSvg 的比较
PathSvg 组件是 Qt Quick Shapes模块的一部分。它提供了一种使用 SVG 语法定义路径的方法,其中路径的控制点以字符串的形式指定。它不支持加载 SVG 文件,因此不能直接替代svgtoqml
。如果一个复杂的 SVG 包含应用程序所需的特定形状,那么将该路径描述复制到PathSvg 可能比生成完整文件更方便。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.