Auf dieser Seite

Vektorielle Bildformate in Qt

Qt unterstützt viele Standard-Dateiformate für das Laden von Grafikdaten, so dass Anwendungen Inhalte importieren können, die mit anderen Tools erstellt wurden.

Dieser Artikel konzentriert sich auf Vektorgrafiken und welche Überlegungen bei der Erstellung von Vektorgrafikinhalten für die Verwendung in einer Qt-Anwendung angestellt werden sollten.

Hinweis: Allgemeine Informationen über die Unterstützung von 2D-Grafiken in Qt finden Sie in der Dokumentation 2D-Grafiken in Qt.

Dateiformat: SVG

SVG Dateien können auf zwei verschiedene Arten geladen werden in Qt Quick: Entweder als Software-gerastertes Bild mit der Image-Komponente oder mit hardwarebeschleunigtem Rendering mit VectorImage (einschließlich der Konvertierung der Datei im Voraus mit svgtoqml).

Darüber hinaus bietet QSvgRenderer allgemeinen Zugriff auf den Software-Rasterizer. QSvgWidget und QGraphicsSvgItem bieten praktische APIs für die Integration von SVG-Inhalten in Qt Widgets Anwendungen.

Als Basis unterstützt Qt die statischen Funktionen des SVG 1.2 Tiny-Profils. Eine detaillierte Liste der von diesem Profil unterstützten Funktionen finden Sie in der SVG 1.2 Tiny-Spezifikation.

Darüber hinaus werden auch einige erweiterte Funktionen unterstützt. Diese werden derzeit nur vom Software-Rasterizer und nicht vom hardwarebeschleunigten Renderer in VectorImage oder svgtoqml unterstützt.

Interaktive Funktionen von SVG werden nicht unterstützt, aber Interaktion kann leicht entweder in Qt Quick oder Qt Widgets. Einige spezifische Animationstypen werden ebenfalls unterstützt, wobei entweder das SMIL-Format oder CSS-Keyframes verwendet werden.

Es folgt eine Übersicht über die unterstützten und nicht unterstützten Funktionen, um einen Überblick darüber zu geben, was zu erwarten ist. Nicht unterstützte Funktionen werden so weit wie möglich ignoriert, so dass SVG-Dateien, die von nicht unterstützten Funktionen abhängen, trotzdem angezeigt werden, aber möglicherweise Lücken oder Fehler aufweisen.

Merkmal auf hoher EbeneSoftware RasterizerVectorImageKommentar
TransformationenJaJa
Grundlegende FormenJaJaKreise, Rechtecke, Ellipsen, Linien, Polylinien und Polygone
Beliebige FormenJaJaZusammengesetzte Pfade aus beliebigen Bezierkurven und Linien.
RasterbilderJaJaSowohl eingebettet als auch im Dateisystem gespeichert
IndirektionenJaJaSpeziell das Element "use
Bedingte VerarbeitungJaJaSpeziell das "switch"-Element
Einfache TextlayoutsJaJa
Eingebettete SchriftartenJaJa
Vollfarbige FüllungenJaJa
Farbverlauf-FüllungenJaJa
Anpassbare StricheJaJaAnpassbare Breite, Strichstärken, Strichverbindungen und Bindestriche
Kosmetische StricheJaNeinUmrisse, die nicht mit der Ansicht skaliert werden
Striche mit FarbverlaufJaJa
MultimediaNeinNein
SkripterstellungNeinNein
VerlinkungNeinNein

Darüber hinaus werden die folgenden erweiterten Funktionen von SVG 1.1 und SVG 2.0 unterstützt:

Hochrangiges MerkmalSoftware-RasterungVectorImageKommentar
MaskenJaNein
Clip-PfadeNeinNein
MusterJaNein
MarkierungenJaNein
Wiederverwendbare SymboleJaNein
NachbearbeitungsfilterJaNeinfeColorMatrix, feFlood, feGaussianBlur, feOffset und feMerge.

Und schließlich werden die folgenden Eigenschaftsanimationen unterstützt (Animationen, die hier nicht aufgeführt sind, werden derzeit nicht unterstützt). Animationen sollten im CSS-Keyframes-Format exportiert werden, um optimale Ergebnisse zu erzielen.

Animation FunktionSoftware RasterizerVectorImageKommentar
Transformations-AnimationenJaJa
Farb-AnimationenJaJa
Deckkraft-AnimationenJaJa

Dateiformat: Lottie

Ähnlich wie bei SVG gibt es verschiedene Möglichkeiten, Dateien im Lottie-Format in Qt zu laden.

Der Typ LottieAnimation lädt ein Bild und zeigt es mit einem Software-Rasterizer an, ähnlich wie QSvgRenderer für SVG.

Darüber hinaus ist ein hardwarebeschleunigtes Rendering mit VectorImage und dem Tool lottietoqml möglich. Diese Tools befinden sich derzeit im Stadium der technischen Vorschau.

Um Lottie-Dateien mit VectorImage verwenden zu können, muss das vectorimageformats Plugin, das im Qt Lottie Animation Modul enthaltene Plugin muss zusammen mit der Anwendung bereitgestellt werden. Darüber hinaus muss die Eigenschaft assumeTrustedSource des VectorImage auf true gesetzt werden.

Das Tool lottietoqml kann verwendet werden, um Lottie-Quelldateien nach QML zu konvertieren. Ein Beispiel hierfür finden Sie im lottietoqml-Beispiel.

Im Folgenden finden Sie eine Liste der High-Level-Features, die vom Typ LottieAnimation (Software-Rasterizer) und VectorImage unterstützt werden (einschließlich der Vorkonvertierung von Dateien mit lottietoqml).

Hochrangige FunktionLottieAnimationVectorImageKommentar
TransformationenJaJa
FormenJaJa
Solide FüllungenJaJa
Farbverlauf-FüllungenJaJa
Anpassbare StricheJaJaAnpassbare Breite, Linienkappen, Linienverbindungen und Striche
Striche mit FarbverlaufNeinNein
Bild-EbenenJaJaNur eingebettete Daten
VorkompositionsebenenJaJa
PfadbeschneidungJaJa
MattenJaNein
MaskenNeinNein
WiederholerJaNein
Ebenen-EffekteNur FülleffektNein
Text-EbenenKeineNein
MultimediaNeinNeinAudio- und Kameraebenen werden nicht unterstützt.
AusdrückeNeinNein
3D-EbenenNeinNein
ZeitumstellungNeinNein

Im Prinzip kann fast jede Eigenschaft im Lottie-Format animiert werden. Für eine umfassende Unterstützung von animierbaren Eigenschaften verwenden Sie LottieAnimation. Der Typ VectorImage (und lottietoqml) bietet Unterstützung für eine ausgewählte Teilmenge von Eigenschaften, die üblicherweise zur Erstellung von Animationen verwendet werden.

Hochrangiges MerkmalLottieAnimationVectorImageKommentar
Animationen transformierenJaJa
Pfad-Trimm-AnimationenJaJa
Farb-AnimationenJaJa
Deckkraft-AnimationenJaJa
Pfad-AnimationenJaNeinMorphing-Animationen von Kontrollpunkten von Formen.
Andere EigenschaftsanimationenJaNein

Dateiformat: Schriftdateien als Vektorgrafikformat

Neben herkömmlichen Formaten für Vektorgrafiken, wie SVG, können auch benutzerdefinierte Schriftdateien verwendet werden, in denen Vektorgrafiken als Glyphen gespeichert sind.

Dies hat den Vorteil, dass einfache Illustrationen in Textbeschriftungen eingefügt werden können, deren typografische Eigenschaften denen von Text ähneln. Dies wiederum kann die Ausrichtung der Bilder am Text erleichtern.

Die Verwendung von Schriftdateien zu diesem Zweck kann auch eine bequeme Möglichkeit sein, große Symbolbibliotheken zu verteilen und Themen bereitzustellen, die während der Laufzeit ersetzt werden können.

Die Verwendung von Schriftarten in Qt ist jedoch für die Erzeugung von Text optimiert, so dass bei der Verwendung von Icon-Fonts als Alternative zu spezialisierten Vektorbildkomponenten wie VectorImage einige Überlegungen anzustellen sind.

Zunächst einmal werden farbige Schriftarten immer in der angegebenen Pixelgröße vorgerastert. Das bedeutet, dass die Anwendung von Transformationen auf solche Textelemente zu Skalierungsartefakten führen wird. Für Illustrationen, die z. B. gezoomt werden müssen, ist die Verwendung von VectorImage vorzuziehen.

Die Verwendung der spezialisierten Komponenten ist auch für alle animierten Vektorbilder vorzuziehen. Während die Erweiterung des variablen Schriftformats Morphing-Animationen ermöglicht, ist dies nicht die Verwendung, für die das Schriftsystem in Qt optimiert ist. Daher wird die Animation der variablen Achsen einer Schrift weniger effizient sein als die Verwendung eines anderen Vektorbildformats.

Für animierte und/oder mehrfarbige Vektorgrafiken sollte daher ein Format wie SVG bevorzugt werden. Für einfarbige, statische Bilder ist die Verwendung einer Schriftart eine Option mit gewissen Vorteilen.

© 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.