Sur cette page

Rendu des fichiers SVG

Les dessins SVG peuvent être affichés sur n'importe quelle sous-classe de ` QPaintDevice `, telle que ` QWidget ` ou ` QImage`. La manière la plus simple d'afficher des fichiers SVG consiste à utiliser ` QSvgWidget ` ou ` QSvgRenderer`.

Utilisation de QSvgWidget

QSvgWidget fournit un widget pratique pour l'affichage des 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 la 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 afficher du contenu SVG sur n'importe quel 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 afficher du contenu SVG directement dans l'événement « paint » 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 d'afficher des fichiers SVG sur tous les périphériques de dessin pris en charge par Qt, y compris QWidget et QImage.

Options de rendu

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

Rendu de 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 l'utilisation des SVG animés.

Voir également Formats d'images vectorielles dans Qt 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.