QSvgRenderer 类

The QSvgRenderer class is used to draw the contents of SVG files onto paint devices. 更多信息...

头文件 #include <QSvgRenderer>
CMakefind_package(Qt6 REQUIRED COMPONENTS Svg)
target_link_libraries(mytarget PRIVATE Qt6::Svg)
qmakeQT += svg
继承 QObject

注意:本类中所有函数都是 重入的

属性

公共函数

QSvgRenderer(QObject *parent = nullptr)
QSvgRenderer(const QString &filename, QObject *parent = nullptr)
QSvgRenderer(const QByteArray &contents, QObject *parent = nullptr)
QSvgRenderer(QXmlStreamReader *contents, QObject *parent = nullptr)
virtual~QSvgRenderer()
boolanimated() const
Qt::AspectRatioModeaspectRatioMode() const
QRectFboundsOnElement(const QString &id) const
QSizedefaultSize() const
boolelementExists(const QString &id) const
intframesPerSecond() const
boolisAnimationEnabled() const
boolisValid() const
QtSvg::Optionsoptions() const
voidsetAnimationEnabled(bool enable)
voidsetAspectRatioMode(Qt::AspectRatioMode mode)
voidsetFramesPerSecond(int num)
voidsetOptions(QtSvg::Options flags)
voidsetViewBox(const QRect &viewbox)
voidsetViewBox(const QRectF &viewbox)
QTransformtransformForElement(const QString &id) const
QRectviewBox() const
QRectFviewBoxF() const

公共槽

boolload(const QString &filename)
boolload(const QByteArray &contents)
boolload(QXmlStreamReader *contents)
voidrender(QPainter *painter)
voidrender(QPainter *painter, const QRectF &bounds)
voidrender(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF())

信号

详细描述

使用 QSvgRenderer,可缩放矢量图形(SVG)可渲染到任何 QPaintDevice 子类,包括 QWidgetQImage 和 QGLWidget。

QSvgRenderer 提供了一个 API,支持 SVG 基本渲染功能,如加载和渲染静态图形,以及更交互式的功能,如动画。由于渲染是使用 QPainter执行的,因此 SVG 图形可以在任何 QPaintDevice 子类上渲染。

SVG 图形在构造 QSvgRenderer 时加载,或使用 load() 函数稍后加载。数据可以作为序列化 XML 直接提供,或间接使用文件名。如果在构造渲染器时或稍后某个时间点加载了有效的文件,则 isValid() 返回 true;否则返回 false。QSvgRenderer 提供 render() 槽来使用给定的画家渲染当前文档或动画文档的当前帧。

defaultSize() 函数提供了所需用于渲染当前加载的 SVG 文件的空间大小信息。这对于需要为其父布局提供大小提示的画布设备(如 QWidget)很有用。图形的默认尺寸可能与使用 viewBox 属性找到的可见区域不同。

支持动画 SVG 图形,并可以使用一组简单的函数和属性进行控制。

最后,QSvgRenderer 类提供了一个 repaintNeeded() 信号,在文档渲染需要更新时发出。

另请参阅QSvgWidgetQt SVG C++ 类QPicture

属性文档

[自 6.7] animationEnabled : bool

如果 SVG 有动画,此属性保留是否应运行动画。

将属性设置为 false 停止动画计时器。如果 SVG 包含动画元素,将属性设置为 false 将开始动画计时器。

如果SVG未被动画化,此属性将不起作用。否则,属性默认为true。

此属性自Qt 6.7版本引入。

访问函数

boolisAnimationEnabled() const
voidsetAnimationEnabled(bool enable)

另请参阅animated

aspectRatioMode : Qt::AspectRatioMode

如何使渲染符合SVG视图框的宽高比

接受的模式有

访问函数

Qt::AspectRatioModeaspectRatioMode() const
voidsetAspectRatioMode(Qt::AspectRatioMode mode)

framesPerSecond : int

此属性保存要显示的每秒帧数

如果当前文档未被动画化,则每秒帧数为0。

访问函数

intframesPerSecond() const
voidsetFramesPerSecond(int num)

另请参阅animated

[since 6.7] options : QtSvg::Options

此属性保存一组QtSvg::Option标志,可用于启用或禁用解析和渲染SVG文件的各种功能。

在调用任何加载数据函数之前设置此属性,以改变QSvgRenderer的行为。

默认情况下,不设置任何标志。

此属性自Qt 6.7版本引入。

访问函数

QtSvg::Optionsoptions() const
voidsetOptions(QtSvg::Options flags)

viewBox : QRectF

此属性保存指定文档可见区域的矩形,以逻辑坐标表示

访问函数

QRectFviewBoxF() const
voidsetViewBox(const QRect &viewbox)
voidsetViewBox(const QRectF &viewbox)

成员函数文档

QSvgRenderer::QSvgRenderer(QObject *parent = nullptr)

根据给定的parent构造新的渲染器。

QSvgRenderer::QSvgRenderer(const QString &filename, QObject *parent = nullptr)

根据给定的parent构造新的渲染器,并加载指定filename的SVG文件内容。

QSvgRenderer::QSvgRenderer(const QByteArray &contents, QObject *parent = nullptr)

根据给定的parent构造新的渲染器,并从指定的字节序列contents中加载SVG数据。

QSvgRenderer::QSvgRenderer(QXmlStreamReader *contents, QObject *parent = nullptr)

根据给定的parent构造新的渲染器,并使用指定的流读取器contents加载数据。

[虚 不可抛出] QSvgRenderer::~QSvgRenderer()

销毁渲染器。

bool QSvgRenderer::animated() const

如果当前文档包含动态元素则返回 true;否则返回 false。

另请参阅 framesPerSecond()。

QRectF QSvgRenderer::boundsOnElement(const QString &id) const

返回给定 id 元素的边界矩形。父元素的变换矩阵不影响元素的边界。

另请参阅 transformForElement()。

QSize QSvgRenderer::defaultSize() const

返回文档内容的默认大小。

bool QSvgRenderer::elementExists(const QString &id) const

如果给定 id 的元素存在于当前解析的 SVG 文件中且是一个可渲染的元素,则返回 true。

注意:此方法仅对可渲染的元素返回 true。这意味着即使是被认为是填充/描边样式属性的一部分的元素,例如径向渐变,即使用 "id" 属性标记,也不会被此方法找到。

bool QSvgRenderer::isValid() const

如果有有效的当前文档,则返回 true;否则返回 false。

[slot] bool QSvgRenderer::load(const QString &filename)

加载由 filename 指定的 SVG 文件,如果内容已成功解析则返回 true;否则返回 false。

[slot] bool QSvgRenderer::load(const QByteArray &contents)

加载指定的 SVG 格式 contents,如果内容已成功解析则返回 true;否则返回 false。

[slot] bool QSvgRenderer::load(QXmlStreamReader *contents)

加载指定的 SVG(在 contents 中),如果内容已成功解析则返回 true;否则返回 false。

读取器将从其当前位置开始使用。如果 contentsnull,行为未定义。

[slot] void QSvgRenderer::render(QPainter *painter)

使用给定的 painter 渲染当前文档,或动态文档的当前帧。

[slot] void QSvgRenderer::render(QPainter *painter, const QRectF &bounds)

使用给定的 painter 在指定 bounds 内渲染当前文档,或动态文档的当前帧。如果 bounds 不为空,输出将按比例缩放以填满它,忽略 SVG 所隐含的任何纵横比。

[槽位] void QSvgRenderer::render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF())

使用给定的 painter 在指定的 bounds 上绘制指定的元素 elementId。如果未指定边框矩形,SVG 元素将被映射到整个绘图设备。

[信号] void QSvgRenderer::repaintNeeded()

当需要更新文档的渲染时(通常用于动画目的)会发出此信号。

QTransform QSvgRenderer::transformForElement(const QString &id) const

返回给定 id 的元素的变换矩阵。该矩阵是元素的父级变换的结果。元素的自身变换不包含在内。

为了找到元素在逻辑坐标中的边界矩形,可以将矩阵应用于从 boundsOnElement() 返回的矩形。

另请参阅 boundsOnElement().

QRect QSvgRenderer::viewBox() const

返回viewBoxF().toRect().

另请参阅 setViewBox() 和 viewBoxF().

© 2024 The Qt Company Ltd. 以下文档贡献的版权属于其各自的所有者。本提供的文档经自由软件基金会发布的GNU 自由文档许可证版本 1.3许可。Qt 和相关标志是芬兰的 The Qt Company Ltd. 以及其他国家和地区的世界性 商标。所有其他商标均为其各自所有者的财产。