Auf dieser Seite

Rendering von SVG-Dateien

SVG-Zeichnungen können auf jeder QPaintDevice Unterklasse gerendert werden, wie z.B. QWidget oder QImage. Der einfachste Weg, SVG-Dateien zu rendern, ist die Verwendung von QSvgWidget oder QSvgRenderer.

Die Verwendung von QSvgWidget

QSvgWidget bietet ein praktisches Widget für die Anzeige von SVG-Dateien.

#include <QApplication>
#include <QSvgWidget>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QSvgWidget svgWidget(QStringLiteral(":/images/example.svg"));
    svgWidget.setGeometry(100, 100, 400, 400);
    svgWidget.show();
    return app.exec();
}

Sie können eine SVG-Datei auch nach der Erstellung laden:

#include <QApplication>
#include <QSvgWidget>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QSvgWidget *svgWidget = new QSvgWidget;
    svgWidget->load(QStringLiteral(":/images/example.svg"));
    svgWidget->show();
    return app.exec();
}

Verwendung von QSvgRenderer

Verwenden Sie QSvgRenderer, um SVG-Inhalte auf einem beliebigen QPaintDevice darzustellen.

#include <QApplication>
#include <QSvgRenderer>
#include <QImage>
#include <QPainter>
#include <QLabel>
#include <QPixmap>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QSvgRenderer renderer(QStringLiteral(":/images/example.svg"));
    if (renderer.isValid()) {
        QImage image(400, 400, QImage::Format_ARGB32_Premultiplied);
        image.fill(Qt::transparent);
        QPainter painter(&image);
        renderer.render(&painter);

        QLabel label;
        label.setPixmap(QPixmap::fromImage(image));
        label.resize(400, 400);
        label.show();
        return app.exec();
    }
    return 1;
}

Sie können auch QSvgRenderer verwenden, um SVG direkt im Paint-Ereignis eines benutzerdefinierten Widgets zu rendern:

// In your widget's header file:
#include <QSvgRenderer>

class MyWidget : public QWidget
{
    Q_OBJECT
public:
    MyWidget(QWidget *parent = nullptr)
        : QWidget(parent), renderer(QStringLiteral(":/images/example.svg")) {}

protected:
    void paintEvent(QPaintEvent *) override {
        QPainter painter(this);
        renderer.render(&painter);
    }

private:
    QSvgRenderer renderer;
};

Mit diesen Ansätzen können Sie SVG-Dateien auf allen von Qt unterstützten Zeichengeräten rendern, einschließlich QWidget und QImage.

Rendering-Optionen

QSvgRenderer bietet Rendering options über das QtSvg::Option enum. Mit diesen Optionen können Sie steuern, wie SVG-Dateien geparst und gerendert werden.

Rendering von animierten SVG-Dateien

Das Modul Qt SVG unterstützt das Rendern von animierten SVG-Dateien. Einzelheiten zur Arbeit mit animierten SVGs finden Sie in der Dokumentation der Klasse QSvgRenderer.

Siehe auch Vector Image Formats in Qt und Extended Features.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.