QGraphicsSvgItem 类
QGraphicsSvgItem 类是一个可以被用来渲染 SVG 文件内容的 QGraphicsItem。 更多信息...
头文件 | #include <QGraphicsSvgItem> |
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 提供了在 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()方法来禁用缓存。
另请参阅QSvgWidget、Qt SVG C++类、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文件内容。
[重写虚函数]
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
© 2024 Qt公司有限公司。本文件中包含的文档贡献受其各自所有者的版权所有。提供的文档是根据自由软件基金会发布的GNU自由文档许可版本1.3许可条款发布的。Qt及其标志是芬兰以及/或世界其他地区Qt公司的商标。所有其他商标均为各自所有者的财产。