QGraphicsSvgItem 类

QGraphicsSvgItem 类是一个可以被用来渲染 SVG 文件内容的 QGraphicsItem更多信息...

头文件 #include <QGraphicsSvgItem>
CMakefind_package(Qt6 REQUIRED COMPONENTS SvgWidgets)
target_link_libraries(mytarget PRIVATE Qt6::SvgWidgets)
qmakeQT += svgwidgets
继承了 QGraphicsObject

属性

公共函数

QGraphicsSvgItem(QGraphicsItem *parent = nullptr)
QGraphicsSvgItem(const QString &fileName, QGraphicsItem *parent = nullptr)
QStringelementId() const
QSizemaximumCacheSize() const
QSvgRenderer *renderer() const
voidsetElementId(const QString &id)
voidsetMaximumCacheSize(const QSize &size)
voidsetSharedRenderer(QSvgRenderer *renderer)

重写的公共函数

virtual QRectFboundingRect() const override
virtual voidpaint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override
virtual inttype() const override

详细描述

QGraphicsSvgItem 提供了在 QGraphicsView 上渲染 SVG 文件的方法。可以通过将其构造函数传递要渲染的 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::NoCache传递给QGraphicsItem::setCacheMode()方法来禁用缓存。

另请参阅QSvgWidgetQt SVG C++类QGraphicsItemQGraphicsView

属性文档

elementId : QString

此属性包含元素的XML ID。

访问函数

QStringelementId() const
voidsetElementId(const QString &id)

maximumCacheSize : QSize

此属性包含此项设备坐标缓存的最大大小。

访问函数

QSizemaximumCacheSize() const
voidsetMaximumCacheSize(const QSize &size)

成员函数文档

QGraphicsSvgItem::QGraphicsSvgItem(QGraphicsItem *parent = nullptr)

构建一个新的具有给定parent的SVG项。

QGraphicsSvgItem::QGraphicsSvgItem(const QString &fileName, QGraphicsItem *parent = nullptr)

构建一个新的具有给定parent的项,并加载指定fileName的SVG文件内容。

[重写虚函数] QRectF QGraphicsSvgItem::boundingRect() const

重新实现了QGraphicsItem::boundingRect() const

返回此项的外接矩形。

QString QGraphicsSvgItem::elementId() const

返回当前正在渲染的元素的XML ID。如果正在渲染整个文件,则返回空字符串。

注意:elementId属性的getter函数。

另请参阅setElementId()。

QSize QGraphicsSvgItem::maximumCacheSize() const

返回此项当前的最大设备坐标缓存大小。如果使用QGraphicsItem::DeviceCoordinateCache模式缓存该项,并且该项在设备坐标中的扩展大于最大大小,则绕过缓存。

默认最大缓存大小为1024x768。QPixmapCache::cacheLimit()返回整个缓存的总积界限,而maximumCacheSize()指的是特定项目的最大缓存大小。

注意:maximumCacheSize属性的获取器函数。

另见:setMaximumCacheSize()和QGraphicsItem::cacheMode

[重写虚函数] 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传递给此方法的必须在本项使用期间存在。

[重写虚函数] int QGraphicsSvgItem::type() const

重实现:QGraphicsItem::type() const

© 2024 Qt公司有限公司。本文件中包含的文档贡献受其各自所有者的版权所有。提供的文档是根据自由软件基金会发布的GNU自由文档许可版本1.3许可条款发布的。Qt及其标志是芬兰以及/或世界其他地区Qt公司的商标。所有其他商标均为各自所有者的财产。