Sur cette page

Rendu des fichiers SVG

Les dessins SVG peuvent être rendus sur n'importe quelle sous-classe de QPaintDevice, comme QWidget ou QImage. La manière la plus simple de rendre des fichiers SVG est d'utiliser QSvgWidget ou QSvgRenderer.

L'utilisation de QSvgWidget

QSvgWidget fournit un widget pratique pour afficher les fichiers SVG.

#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();
}

Vous pouvez également charger un fichier SVG après sa construction :

#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();
}

Utilisation de QSvgRenderer

Utilisez QSvgRenderer pour rendre un contenu SVG sur n'importe quel site QPaintDevice.

#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;
}

Vous pouvez également utiliser QSvgRenderer pour rendre le SVG directement dans l'événement de peinture d'un widget personnalisé :

// 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;
};

Ces approches vous permettent de rendre les fichiers SVG sur tous les dispositifs de peinture supportés par QtG, y compris QWidget et QImage.

Options de rendu

QSvgRenderer fournit le rendu options via l'enum QtSvg::Option. Ces options vous permettent de contrôler la manière dont les fichiers SVG sont analysés et rendus.

Rendu des fichiers SVG animés

Le module Qt SVG prend en charge le rendu des fichiers SVG animés. Reportez-vous à la documentation de la classe QSvgRenderer pour plus de détails sur la façon de travailler avec des SVG animés.

Voir aussi Formats d'images vectorielles dans Qt Image Formats et Fonctionnalités étendues.

© 2026 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.