svgtoqml
svgtoqml es una herramienta de línea de comandos incluida con Qt que convierte un documento SVG en un archivo QML. Este archivo QML puede utilizarse como componente en aplicaciones Qt Quick. El ejemplo de previsión meteorológica incluye varios archivos QML generados con esta herramienta.
Visión general de
svgtoqml convierte un archivo SVG en un archivo QML que utiliza las primitivas de Qt Quick. Dado que Qt Quick admite gráficos vectoriales escalables, el elemento resultante será suavemente transformable en la medida en que esto sea posible. Como base, la herramienta admite la mayoría de las características estáticas del perfil SVG Tiny 1.2. Se admiten algunas características adicionales, determinadas caso por caso. Las funciones interactivas y las animaciones no son compatibles.
Utilización
El uso básico de svgtoqml es proporcionar un archivo de entrada y un archivo de salida: svgtoqml input.svg output.qml. Esto leerá el archivo input.svg y lo convertirá en la escena Qt Quick correspondiente en output.qml, que luego puede utilizarse como parte de una aplicación Qt Quick.
Además, admite las siguientes opciones:
| Opción | Descripción |
|---|---|
--no-assume-trusted-source | Indica que la entrada es un archivo no fiable y que deben activarse comprobaciones y restricciones adicionales. Por defecto, el archivo SVG se analizará con la opción AssumeTrustedSource option. Si se pasa este argumento, se desactivará dicha opción. |
--copyright-statement <string> | Añade <string> como comentario al principio del archivo generado. |
-c, --curve-renderer | Habilita el backend del renderizador de curvas para Qt Quick Shapes. Esto permite obtener formas suaves y suavizadas en la escena sin muestreo múltiple, pero con un coste adicional. |
-a, --asynchronous-shapes | Activa el modo {QtQuick.Shapes::Shape::asynchronous}{asíncrono} en todos los elementos Shape de la escena generada. Esto puede mejorar la utilización de la CPU y la capacidad de respuesta. |
-p, --optimize-paths | Permite optimizar los trazados antes de guardarlos en el archivo QML, lo que puede acelerar su carga y renderización. |
--outline-stroke-mode | Traza el contorno de la forma rellenada en lugar de la ruta original. |
-t, --type-name <string> | En lugar de Shape, la salida utilizará el nombre de tipo <string> en su lugar. Esto permite utilizar un elemento personalizado para anular el comportamiento predeterminado de los elementos de Shape. |
-v, --view | Muestra una vista previa del elemento Qt Quick tal y como se generará. |
La herramienta puede invocarse automáticamente desde la compilación utilizando la función cmake qt_target_qml_from_svg().
Comparación con otras opciones
Existen múltiples opciones para incluir contenido SVG en Qt Quick. A continuación se ofrece una visión general de dónde encaja svgtoqml.
Comparación con Qt SVG
Qt SVG es un módulo que proporciona un analizador sintáctico y un renderizador de software para archivos SVG. Además, incluye un complemento cargador de imágenes, de modo que los archivos SVG pueden cargarse directamente mediante el elemento Image en Qt Quick. A continuación, el SVG se rasteriza y se almacena en caché a un tamaño especificado, y redibujarlo resulta bastante barato. Sin embargo, si se amplía la imagen sin pixelarla, habrá que volver a cargarla a un tamaño diferente, lo que a su vez puede resultar caro.
svgtoqml (y el componente VectorImage ) son formas alternativas de renderizar el mismo contenido. Una vez cargadas en Qt Quick, las transformaciones pueden modificarse conservando los datos geométricos necesarios para renderizar la escena en la memoria de la GPU. Así, la imagen vectorial puede redibujarse a diferentes escalas con muy poca sobrecarga.
Sin embargo, si el tamaño de la imagen no va a cambiar durante el tiempo de vida de la aplicación, cargar el SVG como Image será más eficiente. En este caso, si el SVG siempre se renderiza en un pequeño subconjunto de tamaños posibles, considere la posibilidad de pre-rasterizarlo a un formato de imagen que sea más eficiente de cargar, como PNG.
Comparación con VectorImage
El componente VectorImage proporciona la misma funcionalidad básica que svgtoqml, pero en lugar de pregenerar la escena Qt Quick como un archivo QML, crea la escena en tiempo de ejecución. Esto permite cargar archivos SVG que no se proporcionan en tiempo de compilación y, por tanto, permite una mayor flexibilidad. La pregeneración de escenas con svgtoqml permite optimizar la escena antes de cargarla. Por lo tanto, para los archivos que están disponibles en tiempo de compilación, svgtoqml es la opción preferida.
Comparación con PathSvg
El componente PathSvg forma parte del módulo Qt Quick Shapes módulo. Proporciona una forma de definir rutas con la sintaxis utilizada por SVG, donde los puntos de control de una ruta se especifican como una cadena. No admite la carga de archivos SVG, por lo que no es una alternativa directa a svgtoqml. Si un SVG complejo contiene una forma específica que necesita la aplicación, copiar esta descripción de ruta en PathSvg puede ser más conveniente que generar el archivo completo.
© 2026 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.