QSvgRenderer 类
The QSvgRenderer class is used to draw the contents of SVG files onto paint devices. 更多信息...
头文件 | #include <QSvgRenderer> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Svg) target_link_libraries(mytarget PRIVATE Qt6::Svg) |
qmake | QT += svg |
继承 | QObject |
- 所有成员的列表,包括继承的成员
- QSvgRenderer 是 绘画类 的一部分。
注意:本类中所有函数都是 重入的。
属性
|
公共函数
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() |
bool | animated() const |
Qt::AspectRatioMode | aspectRatioMode() const |
QRectF | boundsOnElement(const QString &id) const |
QSize | defaultSize() const |
bool | elementExists(const QString &id) const |
int | framesPerSecond() const |
bool | isAnimationEnabled() const |
bool | isValid() const |
QtSvg::Options | options() const |
void | setAnimationEnabled(bool enable) |
void | setAspectRatioMode(Qt::AspectRatioMode mode) |
void | setFramesPerSecond(int num) |
void | setOptions(QtSvg::Options flags) |
void | setViewBox(const QRect &viewbox) |
void | setViewBox(const QRectF &viewbox) |
QTransform | transformForElement(const QString &id) const |
QRect | viewBox() const |
QRectF | viewBoxF() const |
公共槽
bool | load(const QString &filename) |
bool | load(const QByteArray &contents) |
bool | load(QXmlStreamReader *contents) |
void | render(QPainter *painter) |
void | render(QPainter *painter, const QRectF &bounds) |
void | render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF()) |
信号
void | repaintNeeded() |
详细描述
使用 QSvgRenderer,可缩放矢量图形(SVG)可渲染到任何 QPaintDevice 子类,包括 QWidget、QImage 和 QGLWidget。
QSvgRenderer 提供了一个 API,支持 SVG 基本渲染功能,如加载和渲染静态图形,以及更交互式的功能,如动画。由于渲染是使用 QPainter执行的,因此 SVG 图形可以在任何 QPaintDevice 子类上渲染。
SVG 图形在构造 QSvgRenderer 时加载,或使用 load() 函数稍后加载。数据可以作为序列化 XML 直接提供,或间接使用文件名。如果在构造渲染器时或稍后某个时间点加载了有效的文件,则 isValid() 返回 true;否则返回 false。QSvgRenderer 提供 render() 槽来使用给定的画家渲染当前文档或动画文档的当前帧。
defaultSize() 函数提供了所需用于渲染当前加载的 SVG 文件的空间大小信息。这对于需要为其父布局提供大小提示的画布设备(如 QWidget)很有用。图形的默认尺寸可能与使用 viewBox 属性找到的可见区域不同。
支持动画 SVG 图形,并可以使用一组简单的函数和属性进行控制。
- animated() 函数指示图形是否包含动画信息。
- framesPerSecond 属性包含动画播放的速度。
最后,QSvgRenderer 类提供了一个 repaintNeeded() 信号,在文档渲染需要更新时发出。
另请参阅QSvgWidget、Qt SVG C++ 类和QPicture。
属性文档
[自 6.7]
animationEnabled : bool
如果 SVG 有动画,此属性保留是否应运行动画。
将属性设置为 false 停止动画计时器。如果 SVG 包含动画元素,将属性设置为 false 将开始动画计时器。
如果SVG未被动画化,此属性将不起作用。否则,属性默认为true。
此属性自Qt 6.7版本引入。
访问函数
bool | isAnimationEnabled() const |
void | setAnimationEnabled(bool enable) |
另请参阅animated。
aspectRatioMode : Qt::AspectRatioMode
如何使渲染符合SVG视图框的宽高比
接受的模式有
- Qt::IgnoreAspectRatio (默认): 忽略宽高比,渲染会被拉伸以适应目标尺寸。
- Qt::KeepAspectRatio: 在目标尺寸内尽可能放大渲染,同时保持宽高比。
访问函数
Qt::AspectRatioMode | aspectRatioMode() const |
void | setAspectRatioMode(Qt::AspectRatioMode mode) |
framesPerSecond : int
此属性保存要显示的每秒帧数
如果当前文档未被动画化,则每秒帧数为0。
访问函数
int | framesPerSecond() const |
void | setFramesPerSecond(int num) |
另请参阅animated。
[since 6.7]
options : QtSvg::Options
此属性保存一组QtSvg::Option标志,可用于启用或禁用解析和渲染SVG文件的各种功能。
在调用任何加载数据函数之前设置此属性,以改变QSvgRenderer的行为。
默认情况下,不设置任何标志。
此属性自Qt 6.7版本引入。
访问函数
QtSvg::Options | options() const |
void | setOptions(QtSvg::Options flags) |
viewBox : QRectF
此属性保存指定文档可见区域的矩形,以逻辑坐标表示
访问函数
QRectF | viewBoxF() const |
void | setViewBox(const QRect &viewbox) |
void | setViewBox(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。
读取器将从其当前位置开始使用。如果 contents 为 null
,行为未定义。
[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. 以及其他国家和地区的世界性 商标。所有其他商标均为其各自所有者的财产。