QSvgRenderer Class
Die Klasse QSvgRenderer wird verwendet, um den Inhalt von SVG-Dateien auf Malgeräten zu zeichnen. Mehr...
Kopfzeile: | #include <QSvgRenderer> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Svg) target_link_libraries(mytarget PRIVATE Qt6::Svg) |
qmake: | QT += svg |
Vererbt: | QObject |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QSvgRenderer ist Teil von Painting Classes.
Hinweis: Alle Funktionen in 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) |
Detaillierte Beschreibung
Mit QSvgRenderer können Scalable Vector Graphics (SVG) auf jede QPaintDevice Unterklasse gerendert werden, einschließlich QWidget, QImage und QGLWidget.
QSvgRenderer bietet eine API, die grundlegende Funktionen des SVG-Renderns unterstützt, wie das Laden und Rendern von statischen Zeichnungen und interaktivere Funktionen wie Animation. Da das Rendering mit QPainter durchgeführt wird, können SVG-Zeichnungen auf jeder Unterklasse von QPaintDevice gerendert werden.
SVG-Zeichnungen werden entweder geladen, wenn ein QSvgRenderer erstellt wird, oder später mit den load()-Funktionen geladen. Die Daten werden entweder direkt als serialisiertes XML oder indirekt über einen Dateinamen übergeben. Wenn eine gültige Datei geladen wurde, entweder bei der Erstellung des Renderers oder zu einem späteren Zeitpunkt, gibt isValid() den Wert true zurück, andernfalls den Wert false. QSvgRenderer stellt den render() Slot zur Verfügung, um das aktuelle Dokument oder den aktuellen Frame eines animierten Dokuments zu rendern, unter Verwendung eines angegebenen Painters.
Die Funktion defaultSize() liefert Informationen über den Platz, der zum Rendern der aktuell geladenen SVG-Datei benötigt wird. Dies ist nützlich für Malvorrichtungen, wie QWidget, die oft einen Größenhinweis an ihr übergeordnetes Layout liefern müssen. Die Standardgröße einer Zeichnung kann von ihrem sichtbaren Bereich abweichen, der mit der Eigenschaft viewBox ermittelt wird.
Animierte SVG-Zeichnungen werden unterstützt und können mit einer einfachen Sammlung von Funktionen und Eigenschaften gesteuert werden:
- Die Funktion animated() zeigt an, ob eine Zeichnung Animationsinformationen enthält.
- Die Eigenschaft framesPerSecond enthält die Geschwindigkeit, mit der die Animation abgespielt wird.
Schließlich bietet die Klasse QSvgRenderer das Signal repaintNeeded(), das immer dann ausgegeben wird, wenn das Rendering des Dokuments aktualisiert werden muss.
Siehe auch QSvgWidget, Qt SVG C++ Classes, und QPicture.
Dokumentation der Eigenschaften
[since 6.7]
animationEnabled : bool
Diese Eigenschaft legt fest, ob die Animation laufen soll, wenn das SVG animiert ist.
Wird die Eigenschaft auf false gesetzt, wird der Animations-Timer angehalten. Wird die Eigenschaft auf true gesetzt, startet der Animationstimer, sofern die SVG animierte Elemente enthält.
Wenn die SVG nicht animiert ist, hat die Eigenschaft keine Auswirkung. Andernfalls wird die Eigenschaft standardmäßig auf true gesetzt.
Diese Eigenschaft wurde in Qt 6.7 eingeführt.
Zugriffsfunktionen:
bool | isAnimationEnabled() const |
void | setAnimationEnabled(bool enable) |
Siehe auch animated().
aspectRatioMode : Qt::AspectRatioMode
wie die Darstellung das Seitenverhältnis der SVG-Ansichtsbox einhält
Die akzeptierten Modi sind:
- Qt::IgnoreAspectRatio (Standard): Das Seitenverhältnis wird ignoriert und das Rendering wird auf die Zielgrenzen gestreckt.
- Qt::KeepAspectRatioRendering: Das Rendering wird zentriert und so groß wie möglich innerhalb der Zielgrenzen skaliert, wobei das Seitenverhältnis erhalten bleibt.
Zugriffsfunktionen:
Qt::AspectRatioMode | aspectRatioMode() const |
void | setAspectRatioMode(Qt::AspectRatioMode mode) |
framesPerSecond : int
Diese Eigenschaft gibt die Anzahl der Bilder pro Sekunde an, die angezeigt werden sollen
Die Anzahl der Bilder pro Sekunde ist 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, die verwendet werden können, um verschiedene Funktionen für das Parsen und Rendern von SVG-Dateien zu aktivieren oder zu deaktivieren.
Um wirksam zu werden, muss diese Eigenschaft gesetzt werden before
load () ausgeführt wird. Beachten Sie, dass die Konstruktoren, die einen SVG-Quellparameter annehmen, das Laden während der Konstruktion durchführen.
Diese Eigenschaft 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 der Mitgliedsfunktionen
QSvgRenderer::QSvgRenderer(QObject *parent = nullptr)
Konstruiert einen neuen Renderer mit dem angegebenen parent.
QSvgRenderer::QSvgRenderer(QXmlStreamReader *contents, QObject *parent = nullptr)
Konstruiert einen neuen Renderer mit dem angegebenen parent und lädt die SVG-Daten mit dem durch contents angegebenen Stream-Reader.
QSvgRenderer::QSvgRenderer(const QByteArray &contents, QObject *parent = nullptr)
Konstruiert 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)
Konstruiert einen neuen Renderer mit dem angegebenen parent und lädt den Inhalt der SVG-Datei mit dem angegebenen filename.
[virtual noexcept]
QSvgRenderer::~QSvgRenderer()
Zerstört den Renderer.
bool QSvgRenderer::animated() const
Gibt true zurück, wenn das aktuelle Dokument animierte Elemente enthält; andernfalls wird false zurückgegeben.
Siehe auch framesPerSecond().
QRectF QSvgRenderer::boundsOnElement(const QString &id) const
Liefert das Begrenzungsrechteck des Elements mit der angegebenen id. Die Transformationsmatrix der übergeordneten Elemente wirkt sich nicht auf die Begrenzungen des Elements aus.
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 der angegebenen id in der aktuell geparsten SVG-Datei existiert und ein renderbares Element ist.
Hinweis: Diese Methode liefert true nur für Elemente, die gerendert werden können. Das bedeutet, dass Elemente, die als Teil der Fill/Stroke-Stil-Eigenschaften betrachtet werden, z. B. radialGradients, auch wenn sie mit "id"-Attributen gekennzeichnet sind, von dieser Methode nicht gefunden werden.
bool QSvgRenderer::isValid() const
Gibt true zurück, wenn es ein gültiges aktuelles Dokument gibt; andernfalls wird false zurückgegeben.
[slot]
bool QSvgRenderer::load(QXmlStreamReader *contents)
Lädt das angegebene SVG in contents und gibt true zurück, wenn der Inhalt erfolgreich geparst wurde; andernfalls wird false zurückgegeben.
Der Reader wird an der Stelle verwendet, an der er sich gerade befindet. Wenn contents null
ist, ist das Verhalten undefiniert.
[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.
[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.
[slot]
void QSvgRenderer::render(QPainter *painter)
Rendert das aktuelle Dokument oder das aktuelle Bild eines animierten Dokuments unter Verwendung der angegebenen painter.
[slot]
void QSvgRenderer::render(QPainter *painter, const QRectF &bounds)
Rendert das aktuelle Dokument oder den aktuellen Frame eines animierten Dokuments unter Verwendung der angegebenen painter auf der angegebenen bounds im Painter. Wenn bounds nicht leer ist, wird die Ausgabe so skaliert, dass sie den Bereich ausfüllt, wobei ein vom SVG impliziertes Seitenverhältnis ignoriert wird.
[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 das Begrenzungsrechteck nicht angegeben wird, wird das SVG-Element auf das gesamte Malgerät abgebildet.
[signal]
void QSvgRenderer::repaintNeeded()
Dieses Signal wird immer dann ausgegeben, wenn das Rendering 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 die 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 der angegebenen id zurück. Die Matrix ist ein Produkt aus den Transformationen der Eltern des Elements. Die Transformation des Elements selbst ist nicht enthalten.
Um das begrenzende Rechteck des Elements in logischen Koordinaten zu finden, 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().
© 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.