SVG ファイルのレンダリング
SVG 図面はQWidget やQImage のようなQPaintDevice のサブクラス上にレンダリングすることができます。 SVG ファイルをレンダリングする最も簡単な方法はQSvgWidget やQSvgRenderer を使用することです。
QSvgWidget
QSvgWidget を使うと、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(); }
また、構築後にSVGファイルを読み込むこともできます:
#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(); }
QSvgRendererの使用
SVGコンテンツを任意のQPaintDevice にレンダリングするには、QSvgRenderer を使用します。
#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; }
また、QSvgRenderer を使って、カスタムウィジェットの paint イベントで SVG を直接レンダリングすることもできます:
// 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; };
これらの方法によって、QWidget やQImage を含む、Qt がサポートするすべてのペイントデバイスで SVG ファイルをレンダリングすることができます。
レンダリングオプション
QSvgRenderer レンダリングオプションはQtSvg::Option 列挙型によってoptions を提供します。これらのオプションにより、SVG ファイルがどのように解析されレンダリングされるかを制御できます。
アニメーション SVG ファイルのレンダリング
Qt SVG モジュールはアニメーション SVG ファイルのレンダリングをサポートします。アニメーション SVG を扱う方法の詳細についてはQSvgRenderer クラス文書を参照。
Qt のベクター画像形式と 拡張機能も参照してください 。
© 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.