QGraphicsSvgItem Class
QGraphicsSvgItem 类是一个QGraphicsItem ,可用于渲染 SVG 文件的内容。更多内容...
| 头文件: | #include <qgraphicssvgitem.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS SvgWidgets) target_link_libraries(mytarget PRIVATE Qt6::SvgWidgets) |
| qmake: | QT += svgwidgets |
| 继承自: | QGraphicsObject |
属性
- elementId : QString
- maximumCacheSize : QSize
公共函数
| 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) |
重新实现的公共函数
| virtual QRectF | boundingRect() const override |
| virtual void | paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override |
| virtual int | type() const override |
详细说明
QGraphicsSvgItem 提供了一种将 SVG 文件渲染到QGraphicsView 上的方法。可以通过将待渲染的 SVG 文件传递给其构造函数,或者显式地为其设置一个共享的QSvgRenderer 来创建 QGraphicsSvgItem。
请注意,在 QGraphicsSvgItem 上设置QSvgRenderer 并不会使该项拥有渲染器的所有权,因此如果使用setSharedRenderer() 方法,必须确保QSvgRenderer 对象的生命周期至少与 QGraphicsSvgItem 的生命周期一样长。
QGraphicsSvgItem 通过setElementId 提供了仅渲染 SVG 文件部分内容的方法。若调用setElementId() 方法,则仅会渲染具有传入 id 的 SVG 元素(及其子元素)。这为选择性渲染包含多个独立元素的大型 SVG 文件提供了一种便捷的方式。 例如,以下代码仅从包含整副扑克牌的 SVG 文件中渲染小丑牌:
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"));可以通过直接操作项的变换矩阵来设置项的大小。
默认情况下,SVG 渲染会使用 `QGraphicsItem::DeviceCoordinateCache ` 模式进行缓存,以加快项目显示速度。可通过向 `QGraphicsItem::setCacheMode()` 方法传入 `QGraphicsItem::NoCache ` 来禁用缓存。
另请参阅 QSvgWidget 、 Qt SVG C++ Classes、QGraphicsItem 以及QGraphicsView 。
属性文档
elementId : QString
该属性存储元素的 XML ID。
访问函数:
| QString | elementId() const |
| void | setElementId(const QString &id) |
maximumCacheSize : QSize
该属性存储了此项的设备坐标缓存的最大大小。
访问函数:
| QSize | maximumCacheSize() const |
| void | setMaximumCacheSize(const QSize &size) |
成员函数文档
QGraphicsSvgItem::QGraphicsSvgItem(QGraphicsItem *parent = nullptr)
使用给定的parent 创建一个新的SVG元素。
QGraphicsSvgItem::QGraphicsSvgItem(const QString &fileName, QGraphicsItem *parent = nullptr)
使用给定的parent 创建一个新项,并加载指定fileName 中的SVG文件内容。
[override virtual] QRectF QGraphicsSvgItem::boundingRect() const
重写了:QGraphicsItem::boundingRect() const。
返回该项的边界矩形。
QString QGraphicsSvgItem::elementId() const
返回当前正在渲染的元素的 XML ID。如果正在渲染整个文件,则返回一个空字符串。
注意: 这是 elementId 属性的获取 函数。
另请参阅 setElementId()。
QSize QGraphicsSvgItem::maximumCacheSize() const
返回该项当前的设备坐标缓存最大大小。如果该项采用QGraphicsItem::DeviceCoordinateCache 模式进行缓存,且该项在设备坐标系中的尺寸大于最大缓存大小,则会绕过缓存。
默认的最大缓存大小为 1024x768。QPixmapCache::cacheLimit() 返回整个缓存的累积边界,而 maximumCacheSize() 则指该特定项的最大缓存大小。
注意: 这是 maximumCacheSize 属性的获取器 函数。
另请参阅 setMaximumCacheSize() 和QGraphicsItem::cacheMode()。
[override virtual] void QGraphicsSvgItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr)
重写了:QGraphicsItem::paint (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)。
QSvgRenderer *QGraphicsSvgItem::renderer() const
返回当前使用的QSvgRenderer 。
void QGraphicsSvgItem::setElementId(const QString &id)
将该元素的 XML ID 设置为id 。
注意: 这是属性elementId 的设置器 函数。
另请参阅 elementId()。
void QGraphicsSvgItem::setMaximumCacheSize(const QSize &size)
将该项的设备坐标缓存最大大小设置为size 。如果该项采用QGraphicsItem::DeviceCoordinateCache 模式进行缓存,且该项在设备坐标系中的尺寸大于size ,则会绕过缓存。
该缓存对应于用于缓存渲染结果的QPixmap 。使用QPixmapCache::setCacheLimit()对整个缓存设置限制,而为单个项目设置缓存大小时请使用setMaximumCacheSize()。
注意: maximumCacheSize 属性的设置 函数。
另请参阅 maximumCacheSize() 和QGraphicsItem::cacheMode()。
void QGraphicsSvgItem::setSharedRenderer(QSvgRenderer *renderer)
将renderer 设置为该项上的共享QSvgRenderer 。通过使用此方法,可以在多个项上共享同一个QSvgRenderer 。这意味着SVG文件只需解析一次。传递给此方法的QSvgRenderer 必须在该项被使用期间始终存在。
[override virtual] int QGraphicsSvgItem::type() const
重新实现了:QGraphicsItem::type() const。
© 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.