QGraphicsSvgItem Class
Die Klasse QGraphicsSvgItem ist eine QGraphicsItem, die verwendet werden kann, um den Inhalt von SVG-Dateien darzustellen. Mehr...
Kopfzeile: | #include <QGraphicsSvgItem> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS SvgWidgets) target_link_libraries(mytarget PRIVATE Qt6::SvgWidgets) |
qmake: | QT += svgwidgets |
Vererbungen: | QGraphicsObject |
Eigenschaften
- elementId : QString
- maximumCacheSize : QSize
Öffentliche Funktionen
QGraphicsSvgItem(QGraphicsItem *parent = nullptr) | |
QGraphicsSvgItem(const QString &fileName, QGraphicsItem *parent = nullptr) | |
QString | elementId() const |
QSize | maximumCacheSize() const |
QSvgRenderer * | renderer() const |
void | setElementId(const QString &id) |
void | setMaximumCacheSize(const QSize &size) |
void | setSharedRenderer(QSvgRenderer *renderer) |
Reimplementierte öffentliche Funktionen
virtual QRectF | boundingRect() const override |
virtual void | paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override |
virtual int | type() const override |
Detaillierte Beschreibung
QGraphicsSvgItem bietet eine Möglichkeit, SVG-Dateien auf QGraphicsView zu rendern. QGraphicsSvgItem kann durch Übergabe der zu rendernden SVG-Datei an seinen Konstruktor oder durch explizites Setzen einer gemeinsamen QSvgRenderer erstellt werden.
Beachten Sie, dass das Setzen von QSvgRenderer auf ein QGraphicsSvgItem nicht dazu führt, dass das Objekt den Renderer übernimmt. Wenn Sie die Methode setSharedRenderer() verwenden, müssen Sie daher sicherstellen, dass die Lebensdauer des QSvgRenderer Objekts mindestens so lang ist wie die des QGraphicsSvgItem.
QGraphicsSvgItem bietet eine Möglichkeit, nur Teile der SVG-Dateien über die setElementId Methode zu rendern. Wenn die setElementId() Methode aufgerufen wird, wird nur das SVG-Element (und seine Kinder) mit der übergebenen id gerendert. Auf diese Weise lassen sich große SVG-Dateien, die eine Reihe von einzelnen Elementen enthalten, selektiv rendern. Der folgende Code rendert zum Beispiel nur Joker aus einer SVG-Datei, die ein ganzes Kartenspiel enthält:
QSvgRenderer *renderer = new QSvgRenderer(QLatin1String("SvgCardDeck.svg")); QGraphicsSvgItem *black = new QGraphicsSvgItem(); QGraphicsSvgItem *red = new QGraphicsSvgItem(); black->setSharedRenderer(renderer); black->setElementId(QLatin1String("black_joker")); red->setSharedRenderer(renderer); red->setElementId(QLatin1String("red_joker"));
Die Größe des Elements kann durch direkte Manipulation der Transformationsmatrix des Elements festgelegt werden.
Standardmäßig wird das SVG-Rendering im QGraphicsItem::DeviceCoordinateCache -Modus zwischengespeichert, um die Anzeige der Elemente zu beschleunigen. Die Zwischenspeicherung kann durch Übergabe von QGraphicsItem::NoCache an die Methode QGraphicsItem::setCacheMode() deaktiviert werden.
Siehe auch QSvgWidget, Qt SVG C++ Classes, QGraphicsItem, und QGraphicsView.
Dokumentation der Eigenschaft
elementId : QString
Diese Eigenschaft enthält die XML-ID des Elements.
Zugriffsfunktionen:
QString | elementId() const |
void | setElementId(const QString &id) |
maximumCacheSize : QSize
Diese Eigenschaft enthält die maximale Größe des Gerätekoordinaten-Caches für dieses Element.
Zugriffsfunktionen:
QSize | maximumCacheSize() const |
void | setMaximumCacheSize(const QSize &size) |
Dokumentation der Mitgliedsfunktionen
QGraphicsSvgItem::QGraphicsSvgItem(QGraphicsItem *parent = nullptr)
Konstruiert ein neues SVG-Element mit dem angegebenen parent.
QGraphicsSvgItem::QGraphicsSvgItem(const QString &fileName, QGraphicsItem *parent = nullptr)
Konstruiert ein neues Element mit dem angegebenen parent und lädt den Inhalt der SVG-Datei mit dem angegebenen fileName.
[override virtual]
QRectF QGraphicsSvgItem::boundingRect() const
Reimplements: QGraphicsItem::boundingRect() const.
Gibt das Begrenzungsrechteck dieses Elements zurück.
QString QGraphicsSvgItem::elementId() const
Gibt die XML-ID des Elements zurück, das gerade gerendert wird. Gibt einen leeren String zurück, wenn die gesamte Datei gerendert wird.
Hinweis: Getter-Funktion für die Eigenschaft elementId.
Siehe auch setElementId().
QSize QGraphicsSvgItem::maximumCacheSize() const
Gibt die aktuelle maximale Größe des Gerätekoordinaten-Caches für dieses Element zurück. Wenn das Element im Modus QGraphicsItem::DeviceCoordinateCache zwischengespeichert wird, wird die Zwischenspeicherung umgangen, wenn die Ausdehnung des Elements in Gerätekoordinaten größer als die maximale Größe ist.
Die standardmäßige maximale Cache-Größe beträgt 1024x768. QPixmapCache::cacheLimit() gibt die kumulativen Grenzen des gesamten Caches an, während maximumCacheSize() sich auf eine maximale Cache-Größe für dieses bestimmte Element bezieht.
Hinweis: Getter-Funktion für die Eigenschaft maximumCacheSize.
Siehe auch setMaximumCacheSize() und QGraphicsItem::cacheMode().
[override virtual]
void QGraphicsSvgItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr)
Reimplements: QGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget).
QSvgRenderer *QGraphicsSvgItem::renderer() const
Gibt die aktuell verwendete QSvgRenderer zurück.
void QGraphicsSvgItem::setElementId(const QString &id)
Setzt die XML-ID des Elements auf id.
Hinweis: Setter-Funktion für die Eigenschaft elementId.
Siehe auch elementId().
void QGraphicsSvgItem::setMaximumCacheSize(const QSize &size)
Legt die maximale Größe des Gerätekoordinaten-Caches des Elements auf size fest. Wird das Element im Modus QGraphicsItem::DeviceCoordinateCache zwischengespeichert, wird die Zwischenspeicherung umgangen, wenn die Ausdehnung des Elements in Gerätekoordinaten größer ist als size.
Der Cache entspricht dem QPixmap, der zum Zwischenspeichern der Rendering-Ergebnisse verwendet wird. Verwenden Sie QPixmapCache::setCacheLimit(), um Einschränkungen für den gesamten Cache festzulegen, und verwenden Sie setMaximumCacheSize(), wenn Sie die Cache-Größe für einzelne Elemente festlegen.
Hinweis: Setter-Funktion für die Eigenschaft maximumCacheSize.
Siehe auch maximumCacheSize() und QGraphicsItem::cacheMode().
void QGraphicsSvgItem::setSharedRenderer(QSvgRenderer *renderer)
Legt fest, dass renderer ein gemeinsam genutztes QSvgRenderer für den Artikel ist. Mit dieser Methode kann man dieselbe QSvgRenderer für eine Reihe von Elementen freigeben. Dies bedeutet, dass die SVG-Datei nur einmal geparst wird. QSvgRenderer, das an diese Methode übergeben wird, muss so lange existieren, wie dieser Eintrag verwendet wird.
[override virtual]
int QGraphicsSvgItem::type() const
Reimplements: QGraphicsItem::type() const.
© 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.