svgtoqml
svgtoqml ist ein Kommandozeilenwerkzeug, das mit Qt ausgeliefert wird und ein SVG-Dokument in eine QML-Datei konvertiert. Diese QML-Datei kann dann als Komponente in Qt Quick Anwendungen verwendet werden. Das Wettervorhersage-Beispiel enthält mehrere QML-Dateien, die mit diesem Tool erzeugt wurden.
Überblick
svgtoqml konvertiert eine SVG-Datei in eine QML-Datei, die Qt Quick Primitive verwendet. Da Qt Quick skalierbare Vektorgrafiken unterstützt, ist das resultierende Element, soweit dies möglich ist, stufenlos transformierbar. Grundsätzlich unterstützt das Tool die meisten statischen Merkmale des SVG Tiny 1.2-Profils. Bestimmte zusätzliche Funktionen werden unterstützt, die von Fall zu Fall festgelegt werden. 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. Damit wird die Datei input.svg gelesen und in die entsprechende Szene Qt Quick in output.qml umgewandelt, die dann als Teil einer Anwendung Qt Quick verwendet werden kann.
Darüber hinaus werden die folgenden Optionen unterstützt:
| Option | Beschreibung |
|---|---|
--no-assume-trusted-source | Zeigt 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 AssumeTrustedSource option geparst. 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, antialiasing Formen in der Szene ohne Multi-Sampling, aber mit einigen zusätzlichen Kosten. |
-a, --asynchronous-shapes | Aktiviert den {QtQuick.Shapes::Shape::asynchronous}{asynchronous} Modus für alle Shape Elemente in der generierten Szene. Dies kann die CPU-Auslastung und die Reaktionsfähigkeit verbessern. |
-p, --optimize-paths | Ermöglicht die Optimierung von Pfaden, bevor sie in die QML-Datei übernommen werden, wodurch sie möglicherweise schneller geladen und später gerendert werden können. |
--outline-stroke-mode | Streichen Sie den Umriss (Kontur) der gefüllten Form anstelle des ursprünglichen Pfades. |
-t, --type-name <string> | Anstelle von Shape wird bei der Ausgabe 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 Qt Quick Elements an, wie es erzeugt wird. |
Das Tool kann mit der cmake-Funktion qt_target_qml_from_svg() automatisch aus dem Build 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 die Geschichte passt.
Vergleich zu Qt SVG
Qt SVG ist ein Modul, das einen Parser und Software-Renderer für SVG-Dateien bereitstellt. Darüber hinaus enthält es ein Bildlade-Plugin, so dass SVG-Dateien direkt über das Element Image in Qt Quick geladen werden können. Das SVG wird dann gerastert und in einer bestimmten Größe zwischengespeichert, so dass das erneute Zeichnen recht kostengünstig ist. Wenn Sie jedoch in das Bild hineinzoomen, ohne es zu verpixeln, müssen Sie es in einer anderen Größe neu laden, was wiederum teuer sein kann.
svgtoqml (und die Komponente VectorImage ) sind alternative Möglichkeiten, denselben Inhalt zu rendern. Nach dem Laden in Qt Quick können die Transformationen geändert werden, während die Geometriedaten, die zum Rendern der Szene benötigt werden, im GPU-Speicher verbleiben. So kann das Vektorbild in verschiedenen Maßstäben mit sehr geringem Overhead neu gezeichnet werden.
Wenn sich die Bildgröße während der Lebensdauer der Anwendung nicht ändert, ist es jedoch effizienter, das SVG als Image zu laden. In diesem Fall, wenn das SVG immer in einer kleinen Teilmenge der möglichen Größen gerendert wird, sollten Sie in Erwägung ziehen, es in ein Bildformat zu rastern, das effizienter zu laden ist, wie z. B. PNG.
Vergleich mit VectorImage
Die Komponente VectorImage bietet die gleiche Grundfunktionalität wie svgtoqml, aber anstatt die Szene Qt Quick als QML-Datei vorzuerzeugen, wird die Szene zur Laufzeit erstellt. Dies ermöglicht das Laden von SVG-Dateien, die zur Erstellungszeit nicht bereitgestellt werden, und bietet somit mehr Flexibilität. Die Vorgenerierung der Szenen mit svgtoqml ermöglicht es, die Szene zu optimieren, bevor sie geladen wird. Für Dateien, die zum Zeitpunkt der Erstellung verfügbar sind, ist svgtoqml daher 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 String angegeben werden. Sie unterstützt nicht das Laden von SVG-Dateien und ist daher keine direkte Alternative zu svgtoqml. Wenn ein komplexes SVG eine bestimmte Form enthält, die von der Anwendung benötigt wird, kann es bequemer sein, diese Pfadbeschreibung in PathSvg zu kopieren, als die vollständige Datei zu erzeugen.
© 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.