svgtoqml
svgtoqml ist ein mit Qt mitgeliefertes Befehlszeilentool, das ein SVG-Dokument in eine QML-Datei konvertiert. Diese QML-Datei kann dann als Komponente in Qt Quick -Anwendungen verwendet werden. Das Beispiel „Wettervorhersage“ enthält mehrere QML-Dateien, die mit diesem Tool generiert wurden.
Übersicht
svgtoqml konvertiert eine SVG-Datei in eine QML-Datei, die auf den „ Qt Quick “-Primitiven basiert. Da „ Qt Quick “ skalierbare Vektorgrafiken unterstützt, lässt sich das resultierende Element so weit wie möglich nahtlos transformieren. Grundsätzlich unterstützt das Tool die meisten statischen Funktionen des SVG-Tiny-1.2-Profils. Bestimmte zusätzliche Funktionen werden unterstützt, wobei dies von Fall zu Fall entschieden wird. Interaktive Funktionen und Animationen werden nicht unterstützt.
Verwendung
Die grundlegende Verwendung von „ svgtoqml “ besteht darin, eine Eingabedatei und eine Ausgabedatei bereitzustellen: svgtoqml input.svg output.qml. Dadurch wird die input.svg -Datei gelesen und in die entsprechende Qt Quick -Szene unter output.qml konvertiert, die dann als Teil einer Qt Quick -Anwendung verwendet werden kann.
Darüber hinaus unterstützt es die folgenden Optionen:
| Option | Beschreibung |
|---|---|
--no-assume-trusted-source | Gibt an, dass es sich bei der Eingabe um eine nicht vertrauenswürdige Datei handelt und zusätzliche Prüfungen und Einschränkungen aktiviert werden sollten. Standardmäßig wird die SVG-Datei mit der Option „ AssumeTrustedSource option “ analysiert. Durch die Übergabe dieses Arguments wird diese Option deaktiviert. |
--copyright-statement <string> | Fügt <string> als Kommentar am Anfang der generierten Datei ein. |
-c, --curve-renderer | Aktiviert das Kurven-Renderer-Backend für Qt Quick Shapes. Dies ermöglicht glatte, kantenglättete Formen in der Szene ohne Multisampling, ist jedoch mit einem gewissen Mehraufwand verbunden. |
-a, --asynchronous-shapes | Aktiviert den {QtQuick.Shapes::Shape::asynchronous}{asynchronen} Modus für alle „ Shape “-Elemente in der generierten Szene. Dies kann die CPU-Auslastung und die Reaktionsgeschwindigkeit verbessern. |
-p, --optimize-paths | Aktiviert die Optimierung von Pfaden, bevor diese in die QML-Datei übernommen werden, wodurch sie später möglicherweise schneller geladen und gerendert werden können. |
--outline-stroke-mode | Zeichnet den Umriss (die Kontur) der gefüllten Form anstelle des ursprünglichen Pfades nach. |
-t, --type-name <string> | Anstelle von „ Shape “ wird in der Ausgabe stattdessen der Typname <string> verwendet. Dies ermöglicht die Verwendung eines benutzerdefinierten Elements, um das Standardverhalten von „ Shape “-Elementen zu überschreiben. |
-v, --view | Zeigt eine Vorschau des Elements „ Qt Quick “ so an, wie es generiert wird. |
Das Tool kann automatisch aus dem Build heraus über die CMake-Funktion ` qt_target_qml_from_svg()` aufgerufen werden.
Vergleich mit anderen Optionen
Es gibt mehrere Möglichkeiten, SVG-Inhalte in „ Qt Quick “ einzubinden. Im Folgenden wird ein Überblick darüber gegeben, wo „ svgtoqml “ in diesen Zusammenhang passt.
Vergleich mit Qt SVG
Qt SVG ist ein Modul, das einen Parser und einen Software-Renderer für SVG-Dateien bereitstellt. Darüber hinaus enthält es ein Bildlader-Plugin, sodass SVG-Dateien direkt über das ` Image `-Element in ` Qt Quick` geladen werden können. Die SVG-Datei wird dann in einer festgelegten Größe gerastert und zwischengespeichert, wodurch das Neuzeichnen relativ ressourcenschonend ist. Das Vergrößern des Bildes ohne Pixelierung erfordert jedoch das Neuladen in einer anderen Größe, was wiederum rechenintensiv sein kann.
svgtoqml (und die „ VectorImage “-Komponente) sind alternative Möglichkeiten, denselben Inhalt darzustellen. Sobald die Datei in „ Qt Quick “ geladen ist, können Transformationen geändert werden, während die für die Darstellung der Szene erforderlichen Geometriedaten im GPU-Speicher erhalten bleiben. Somit kann das Vektorbild mit sehr geringem Aufwand in verschiedenen Maßstäben neu gezeichnet werden.
Wenn sich die Bildgröße während der Laufzeit der Anwendung jedoch nicht ändert, ist das Laden der SVG-Datei als „ Image “ effizienter. In diesem Fall sollten Sie, wenn die SVG-Datei stets in einem kleinen Teil der möglichen Größen gerendert wird, in Erwägung ziehen, sie vorab in ein Bildformat zu rasterisieren, das effizienter zu laden ist, wie beispielsweise PNG.
Vergleich mit VectorImage
Die Komponente „ VectorImage “ bietet dieselbe Grundfunktionalität wie „ svgtoqml “, erstellt die „ Qt Quick “-Szene jedoch nicht vorab als QML-Datei, sondern erst zur Laufzeit. Dies ermöglicht das Laden von SVG-Dateien, die zum Zeitpunkt der Erstellung noch nicht verfügbar sind, und sorgt somit für mehr Flexibilität. Das Vorabgenerieren der Szenen mit „ svgtoqml “ ermöglicht es, die Szene vor dem Laden zu optimieren. Für Dateien, die bereits zum Zeitpunkt der Kompilierung verfügbar sind, ist daher „ svgtoqml “ die bevorzugte Option.
Vergleich mit PathSvg
Die Komponente „ PathSvg “ ist Teil des Qt Quick Shapes Moduls. Sie bietet eine Möglichkeit, Pfade mit der von SVG verwendeten Syntax zu definieren, wobei die Kontrollpunkte eines Pfades als Zeichenkette angegeben werden. Sie unterstützt das Laden von SVG-Dateien nicht und ist daher keine direkte Alternative zu „ svgtoqml “. Wenn eine komplexe SVG-Datei eine bestimmte, von der Anwendung benötigte Form enthält, kann es praktischer sein, diese Pfadbeschreibung in „ PathSvg “ zu kopieren, als die gesamte Datei zu generieren.
© 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.