Auf dieser Seite

QSvgRenderer Class

Die Klasse „QSvgRenderer“ dient dazu, den Inhalt von SVG-Dateien auf Zeichen-Geräte zu zeichnen. Mehr...

Header: #include <QSvgRenderer>
CMake: find_package(Qt6 REQUIRED COMPONENTS Svg)
target_link_libraries(mytarget PRIVATE Qt6::Svg)
qmake: QT += svg
Erbt von: QObject

Hinweis: Alle Funktionen dieser Klasse sind reentrant.

Eigenschaften

Öffentliche Funktionen

QSvgRenderer(QObject *parent = nullptr)
QSvgRenderer(QXmlStreamReader *contents, QObject *parent = nullptr)
QSvgRenderer(const QByteArray &contents, QObject *parent = nullptr)
QSvgRenderer(const QString &filename, QObject *parent = nullptr)
virtual ~QSvgRenderer()
bool animated() const
Qt::AspectRatioMode aspectRatioMode() const
QRectF boundsOnElement(const QString &id) const
QSize defaultSize() const
bool elementExists(const QString &id) const
int framesPerSecond() const
bool isAnimationEnabled() const
bool isValid() const
QtSvg::Options options() const
void setAnimationEnabled(bool enable)
void setAspectRatioMode(Qt::AspectRatioMode mode)
void setFramesPerSecond(int num)
void setOptions(QtSvg::Options flags)
void setViewBox(const QRect &viewbox)
void setViewBox(const QRectF &viewbox)
QTransform transformForElement(const QString &id) const
QRect viewBox() const
QRectF viewBoxF() const

Öffentliche Slots

bool load(QXmlStreamReader *contents)
bool load(const QByteArray &contents)
bool load(const QString &filename)
void render(QPainter *painter)
void render(QPainter *painter, const QRectF &bounds)
void render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF())

Signale

void repaintNeeded()

Statische öffentliche Mitglieder

(since 6.8) void setDefaultOptions(QtSvg::Options flags)

Ausführliche Beschreibung

Mit QSvgRenderer können skalierbare Vektorgrafiken (SVG) auf jede Unterklasse von ` QPaintDevice ` gerendert werden, einschließlich ` QWidget`, ` QImage` und `QGLWidget`.

QSvgRenderer bietet eine API, die grundlegende Funktionen der SVG-Darstellung unterstützt, wie das Laden und Darstellen statischer Zeichnungen sowie interaktivere Funktionen wie Animationen. Da die Darstellung über ` QPainter` erfolgt, können SVG-Zeichnungen auf jeder Unterklasse von ` QPaintDevice` dargestellt werden.

SVG-Zeichnungen werden entweder beim Erstellen eines `QSvgRenderer` geladen oder später mithilfe der Funktionen ` load()` geladen. Die Daten werden entweder direkt als serialisiertes XML oder indirekt über einen Dateinamen bereitgestellt. Wenn eine gültige Datei geladen wurde – sei es beim Erstellen des Renderers oder zu einem späteren Zeitpunkt –, gibt ` isValid()` „true“ zurück; andernfalls gibt sie „false“ zurück. QSvgRenderer stellt den Slot „ render()“ bereit, um das aktuelle Dokument oder den aktuellen Frame eines animierten Dokuments mithilfe eines angegebenen Painters zu rendern.

Die Funktion ` defaultSize()` liefert Informationen über den Speicherplatzbedarf zum Rendern der aktuell geladenen SVG-Datei. Dies ist nützlich für Zeichenelemente wie ` QWidget`, die häufig einen Größenhinweis an ihr übergeordnetes Layout übermitteln müssen. Die Standardgröße einer Zeichnung kann von ihrem sichtbaren Bereich abweichen, der über die Eigenschaft ` viewBox ` ermittelt wird.

Animierte SVG-Zeichnungen werden unterstützt und lassen sich mit einer Reihe einfacher Funktionen und Eigenschaften steuern:

  • Die Funktion „ animated()“ gibt an, ob eine Zeichnung Animationsinformationen enthält.
  • Die Eigenschaft ` framesPerSecond ` gibt die Wiedergaberate der Animation an.

Schließlich stellt die Klasse `QSvgRenderer` das Signal ` repaintNeeded()` bereit, das immer dann ausgelöst wird, wenn die Darstellung des Dokuments aktualisiert werden muss.

Siehe auch ` QSvgWidget`, Qt SVG C++ Classesund ` QPicture`.

Dokumentation zu den Eigenschaften

[since 6.7] animationEnabled : bool

Diese Eigenschaft legt fest, ob die Animation ausgeführt werden soll, sofern das SVG animiert ist

Wird die Eigenschaft auf „false“ gesetzt, wird der Animationstimer angehalten. Wird die Eigenschaft auf „true“ gesetzt, wird der Animationstimer gestartet, sofern das SVG animierte Elemente enthält.

Ist das SVG nicht animiert, hat die Eigenschaft keine Auswirkung. Andernfalls ist die Standardeinstellung der Eigenschaft „true“.

Diese Enumeration wurde in Qt 6.7 eingeführt.

Zugriffsfunktionen:

bool isAnimationEnabled() const
void setAnimationEnabled(bool enable)

Siehe auch ` animated()`.

aspectRatioMode : Qt::AspectRatioMode

Wie die Darstellung dem Seitenverhältnis der SVG-Ansichtsbox entspricht

Die zulässigen Modi sind:

  • Qt::IgnoreAspectRatio (Standard): Das Seitenverhältnis wird ignoriert und die Darstellung wird auf die Zielgrenzen gestreckt.
  • Qt::KeepAspectRatio: Die Darstellung wird zentriert und innerhalb der Zielgrenzen so groß wie möglich skaliert, wobei das Seitenverhältnis beibehalten wird.

Zugriffsfunktionen:

Qt::AspectRatioMode aspectRatioMode() const
void setAspectRatioMode(Qt::AspectRatioMode mode)

framesPerSecond : int

Diese Eigenschaft gibt die Anzahl der anzuzeigenden Bilder pro Sekunde an

Die Anzahl der Bilder pro Sekunde beträgt 0, wenn das aktuelle Dokument nicht animiert ist.

Zugriffsfunktionen:

int framesPerSecond() const
void setFramesPerSecond(int num)

Siehe auch „ animated()“.

[since 6.7] options : QtSvg::Options

Diese Eigenschaft enthält eine Reihe von „ QtSvg::Option “-Flags, mit denen verschiedene Funktionen der Analyse und Darstellung von SVG-Dateien aktiviert oder deaktiviert werden können.

Damit diese Eigenschaft wirksam wird, muss sie vor der Ausführung von ` load()` auf ` before ` gesetzt werden. Beachten Sie, dass die Konstruktoren, die einen SVG-Quellparameter entgegennehmen, das Laden bereits während der Konstruktion durchführen.

Diese Aufzählung wurde in Qt 6.7 eingeführt.

Zugriffsfunktionen:

QtSvg::Options options() const
void setOptions(QtSvg::Options flags)

Siehe auch setDefaultOptions.

viewBox : QRectF

Diese Eigenschaft enthält das Rechteck, das den sichtbaren Bereich des Dokuments in logischen Koordinaten angibt

Zugriffsfunktionen:

QRectF viewBoxF() const
void setViewBox(const QRect &viewbox)
void setViewBox(const QRectF &viewbox)

Dokumentation zu den Mitgliedsfunktionen

QSvgRenderer::QSvgRenderer(QObject *parent = nullptr)

Erstellt einen neuen Renderer mit dem angegebenen „ parent “.

QSvgRenderer::QSvgRenderer(QXmlStreamReader *contents, QObject *parent = nullptr)

Erstellt einen neuen Renderer mit dem angegebenen ` parent ` und lädt die SVG-Daten mithilfe des durch ` contents` angegebenen Stream-Readers.

QSvgRenderer::QSvgRenderer(const QByteArray &contents, QObject *parent = nullptr)

Erstellt einen neuen Renderer mit dem angegebenen ` parent ` und lädt die SVG-Daten aus dem durch ` contents` angegebenen Byte-Array.

QSvgRenderer::QSvgRenderer(const QString &filename, QObject *parent = nullptr)

Erstellt einen neuen Renderer mit dem angegebenen „ parent “ und lädt den Inhalt der SVG-Datei mit dem angegebenen „ filename “.

[virtual noexcept] QSvgRenderer::~QSvgRenderer()

Löscht den Renderer.

bool QSvgRenderer::animated() const

Gibt „true“ zurück, wenn das aktuelle Dokument animierte Elemente enthält; andernfalls gibt es „false“ zurück.

Siehe auch framesPerSecond().

QRectF QSvgRenderer::boundsOnElement(const QString &id) const

Gibt das Begrenzungsrechteck des Elements mit der angegebenen „ id “ zurück. Die Transformationsmatrix der übergeordneten Elemente hat keinen Einfluss auf die Begrenzungen des Elements.

Siehe auch ` transformForElement()`.

QSize QSvgRenderer::defaultSize() const

Gibt die Standardgröße des Dokumentinhalts zurück.

bool QSvgRenderer::elementExists(const QString &id) const

Gibt „true“ zurück, wenn das Element mit dem angegebenen „ id “ in der aktuell geparsten SVG-Datei vorhanden ist und ein darstellbares Element ist.

Hinweis: Diese Methode gibt nur für Elemente „true“ zurück, die gerendert werden können. Das bedeutet, dass Elemente, die als Teil der Füll- und Konturstil-Eigenschaften gelten, z. B. „radialGradients“, selbst wenn sie mit „id“-Attributen gekennzeichnet sind, von dieser Methode nicht gefunden werden.

bool QSvgRenderer::isValid() const

Gibt „true“ zurück, wenn ein gültiges aktuelles Dokument vorhanden ist; andernfalls wird „false“ zurückgegeben.

[slot] bool QSvgRenderer::load(QXmlStreamReader *contents)

Lädt die angegebene SVG-Datei unter contents und gibt „true“ zurück, wenn der Inhalt erfolgreich geparst wurde; andernfalls wird „false“ zurückgegeben.

Der Reader wird ab der aktuellen Position verwendet. Wenn contents gleich null ist, ist das Verhalten undefiniert.

Hinweis: Dieser Slot ist überladen. So stellen Sie eine Verbindung zu diesem Slot her:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        svgRenderer, qOverload(&QSvgRenderer::load));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        svgRenderer, [receiver = svgRenderer](QXmlStreamReader *contents) { receiver->load(contents); });
Weitere Beispiele und Vorgehensweisen finden Sie unter „Verbindung zu überladenen Slots herstellen“.

[slot] bool QSvgRenderer::load(const QByteArray &contents)

Lädt das angegebene SVG-Format contents und gibt „true“ zurück, wenn der Inhalt erfolgreich geparst wurde; andernfalls wird „false“ zurückgegeben.

Hinweis: Dieser Slot ist überladen. So stellen Sie eine Verbindung zu diesem Slot her:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        svgRenderer, qOverload(&QSvgRenderer::load));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        svgRenderer, [receiver = svgRenderer](const QByteArray &contents) { receiver->load(contents); });
Weitere Beispiele und Vorgehensweisen finden Sie unter „Verbindung zu überladenen Slots herstellen“.

[slot] bool QSvgRenderer::load(const QString &filename)

Lädt die durch ` filename` angegebene SVG-Datei und gibt `true` zurück, wenn der Inhalt erfolgreich geparst wurde; andernfalls wird `false` zurückgegeben.

Hinweis: Dieser Slot ist überladen. So stellen Sie eine Verbindung zu diesem Slot her:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        svgRenderer, qOverload(&QSvgRenderer::load));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        svgRenderer, [receiver = svgRenderer](const QString &filename) { receiver->load(filename); });
Weitere Beispiele und Vorgehensweisen finden Sie unter „Verbindung zu überladenen Slots herstellen“.

[slot] void QSvgRenderer::render(QPainter *painter)

Rendert das aktuelle Dokument oder den aktuellen Frame eines animierten Dokuments unter Verwendung der angegebenen ` painter`.

Hinweis: Dieser Slot ist überladen. So stellen Sie eine Verbindung zu diesem Slot her:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        svgRenderer, qOverload(&QSvgRenderer::render));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        svgRenderer, [receiver = svgRenderer](QPainter *painter) { receiver->render(painter); });
Weitere Beispiele und Vorgehensweisen finden Sie unter „An überladene Slots anbinden“.

[slot] void QSvgRenderer::render(QPainter *painter, const QRectF &bounds)

Rendert das aktuelle Dokument oder den aktuellen Frame eines animierten Dokuments unter Verwendung des angegebenen „ painter “ auf dem angegebenen „ bounds “ innerhalb des Painters. Ist „ bounds “ nicht leer, wird die Ausgabe so skaliert, dass sie diesen Bereich ausfüllt, wobei das durch das SVG vorgegebene Seitenverhältnis ignoriert wird.

Hinweis: Dieser Slot ist überladen. So stellen Sie eine Verbindung zu diesem Slot her:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        svgRenderer, qOverload(&QSvgRenderer::render));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        svgRenderer, [receiver = svgRenderer](QPainter *painter, const QRectF &bounds) { receiver->render(painter, bounds); });
Weitere Beispiele und Vorgehensweisen finden Sie unter „An überladene Slots anschließen“.

[slot] void QSvgRenderer::render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF())

Rendert das angegebene Element mit „ elementId “ unter Verwendung des angegebenen „ painter “ auf dem angegebenen „ bounds “. Wenn kein Begrenzungsrechteck angegeben ist, wird das SVG-Element auf das gesamte Zeichen-Device abgebildet.

Hinweis: Dieser Slot ist überladen. So stellen Sie eine Verbindung zu diesem Slot her:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        svgRenderer, qOverload(&QSvgRenderer::render));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        svgRenderer, [receiver = svgRenderer](QPainter *painter, const QString &elementId, const QRectF &bounds) { receiver->render(painter, elementId, bounds); });
Weitere Beispiele und Vorgehensweisen finden Sie unter „An überladene Slots anbinden“.

[signal] void QSvgRenderer::repaintNeeded()

Dieses Signal wird immer dann ausgelöst, wenn die Darstellung des Dokuments aktualisiert werden muss, in der Regel für Animationszwecke.

[static, since 6.8] void QSvgRenderer::setDefaultOptions(QtSvg::Options flags)

Setzt die Optionsflags, mit denen Renderer erstellt werden, auf „ flags “. Standardmäßig sind keine Flags gesetzt.

Zur Laufzeit kann dies durch die Umgebungsvariable `QT_SVG_DEFAULT_OPTIONS` überschrieben werden.

Diese Funktion wurde in Qt 6.8 eingeführt.

QTransform QSvgRenderer::transformForElement(const QString &id) const

Gibt die Transformationsmatrix für das Element mit dem angegebenen id zurück. Die Matrix ist das Produkt der Transformationen der übergeordneten Elemente. Die Transformation des Elements selbst ist nicht enthalten.

Um das Begrenzungsrechteck des Elements in logischen Koordinaten zu ermitteln, können Sie die Matrix auf das von ` boundsOnElement()` zurückgegebene Rechteck anwenden.

Siehe auch ` boundsOnElement()`.

QRect QSvgRenderer::viewBox() const

Gibt ` viewBoxF().toRect()` zurück.

Siehe auch „ setViewBox()“ und „ viewBoxF()“.

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