QSvgGenerator类

QSvgGenerator类提供了一个绘图设备,用于创建SVG图形。更多信息...

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

注意: 此类中的所有函数都是可重入的。

公共类型

(自6.5起) enum classSvgVersion { SvgTiny12, Svg11 }

属性

公共函数

QSvgGenerator()
(自6.5起) QSvgGenerator(QSvgGenerator::SvgVersion version)
virtual~QSvgGenerator()
QStringdescription() const
QStringfileName() const
QIODevice *outputDevice() const
intresolution() const
voidsetDescription(const QString &description)
voidsetFileName(const QString &fileName)
voidsetOutputDevice(QIODevice *outputDevice)
voidsetResolution(int dpi)
voidsetSize(const QSize &size)
voidsetTitle(const QString &title)
voidsetViewBox(const QRect &viewBox)
voidsetViewBox(const QRectF &viewBox)
QSizesize() const
(自6.5起) QSvgGenerator::SvgVersionsvgVersion() const
QStringtitle() const
QRectviewBox() const
QRectFviewBoxF() const

重实现的保护函数

virtual intmetric(QPaintDevice::PaintDeviceMetric metric) const override
虚拟 QPaintEngine * 类重写paintEngine() const

详细说明

此绘图设备代表一个可缩放的矢量图形(SVG)绘图。与 QPrinter 类似,它被设计为一个只写设备,可以生成特定格式的输出。

要写入 SVG 文件,首先需要通过设置 fileNameoutputDevice 属性来配置输出。通常需要设置 size 属性以指定绘图的尺寸,在某些情况下,如果绘图将包含在其他绘图内,则还需要设置 viewBox 属性。

    QSvgGenerator generator;
    generator.setFileName(path);
    generator.setSize(QSize(200, 200));
    generator.setViewBox(QRect(0, 0, 200, 200));
    generator.setTitle(tr("SVG Generator Example Drawing"));
    generator.setDescription(tr("An SVG drawing created by the SVG Generator "
                                "Example provided with Qt."));

其他元数据可以通过设置 titledescriptionresolution 属性来指定。

与其他 QPaintDevice 子类一样,使用一个 QPainter 对象在此类的一个实例上绘制

    QPainter painter;
    painter.begin(&generator);
    ...
    painter.end();

绘制的方式与其他任何绘图设备相同。但是,在设备上进行绘制和结束绘制时,需要使用 QPainter::begin() 和 end() 来显式开始和结束。

另请参阅QSvgRendererQSvgWidget 以及 Qt SVG C++类

成员类型文档

[自 6.5 版起]枚举类 QSvgGenerator::SvgVersion

此枚举描述了生成器的 SVG 输出版本。

常量描述
QSvgGenerator::SvgVersion::SvgTiny120生成的文档遵循 SVG Tiny 1.2 规范。
QSvgGenerator::SvgVersion::Svg111生成的文档遵循 SVG 1.1 规范。

此枚举自 Qt 6.5 版本中引入。

属性文档

description : QString

此属性包含生成的 SVG 绘图的说明

访问函数

QStringdescription() const
voidsetDescription(const QString &description)

另请参阅title

fileName : QString

此属性包含生成的 SVG 绘图的目标文件名

访问函数

QStringfileName() const
voidsetFileName(const QString &fileName)

另请参阅outputDevice

outputDevice : QIODevice*

此属性包含生成的 SVG 绘图的输出设备

如果同时指定了输出设备和文件名,则输出设备具有优先权。

访问函数

QIODevice *outputDevice() const
voidsetOutputDevice(QIODevice *outputDevice)

另请参阅fileName

resolution : int

此属性包含生成的输出的分辨率

分辨率以每英寸点数为单位指定,用于计算 SVG 绘图的物理尺寸。

访问函数

intresolution() const
voidsetResolution(int dpi)

另请参阅sizeviewBox

size : QSize

该属性存储生成的SVG绘图的大小

默认情况下,该属性设置为 QSize(-1, -1),表示生成器不应输出 <svg> 元素的宽度和高度属性。

注意:在生成器上激活一个 QPainter 时,无法更改此属性。

访问函数

QSizesize() const
voidsetSize(const QSize &size)

另请参阅:viewBoxresolution

title : QString

该属性存储生成的SVG绘图标题

访问函数

QStringtitle() const
voidsetTitle(const QString &title)

另请参阅:description

viewBox : QRectF

该属性存储生成的SVG绘图的可视框

默认情况下,该属性设置为 QRect(0, 0, -1, -1),表示生成器不应输出 <svg> 元素的可视框属性。

注意:在生成器上激活一个 QPainter 时,无法更改此属性。

访问函数

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

另请参阅:viewBox(),sizeresolution

成员函数文档

QSvgGenerator::QSvgGenerator()

使用SVG Tiny 1.2配置文件构建新的生成器。

[显式,自6.5起] QSvgGenerator::QSvgGenerator(QSvgGenerator::SvgVersion version)

构建一个使用SVG版本 version 的新生成器。

此函数自Qt 6.5引入。

[虚�数 noexcept] QSvgGenerator::~QSvgGenerator()

销毁生成器。

[虚拟受保护覆盖] int QSvgGenerator::metric(QPaintDevice::PaintDeviceMetric metric) const

重新实现:QPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const

[虚拟受保护覆盖] QPaintEngine *QSvgGenerator::paintEngine() const

重新实现:QPaintDevice::paintEngine() const

返回用于渲染要转换为SVG格式的图形的绘图引擎。

[自6.5起] QSvgGenerator::SvgVersion QSvgGenerator::svgVersion() const

返回此生成器生成的SVG文档的版本。

此函数自Qt 6.5引入。

QRect QSvgGenerator::viewBox() const

返回 viewBoxF().toRect()。

另请参阅:setViewBox() 和 viewBoxF()。

© 2024 The Qt Company Ltd. 本文档中包含的文档贡献享有各自所有者的版权。本提供的文档根据自由软件基金会发布的《GNU自由文档许可证》版本1.3的条款进行许可。Qt及其相关标志是The Qt Company Ltd.在芬兰和/或其他国家/地区的商标。所有其他商标均为各自所有者的财产。