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 |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QSvgRenderer ist Teil der Malklassen.
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); }); [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); }); [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); }); [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); }); [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); }); [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); }); [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.