このページでは

QSvgRenderer Class

QSvgRenderer クラスは、SVG ファイルの内容をペイントデバイス上に描画するために使用されます。詳細...

ヘッダー: #include <QSvgRenderer>
CMake: find_package(Qt6 REQUIRED COMPONENTS Svg)
target_link_libraries(mytarget PRIVATE Qt6::Svg)
qmake: QT += svg
継承元: QObject

注:このクラスのすべての関数は再入可能です。

プロパティ

パブリック関数

QSvgRenderer(QObject *parent = nullptr)
QSvgRenderer(QXmlStreamReader *contents, QObject *parent = nullptr)
QSvgRenderer(const QByteArray &contents, QObject *parent = nullptr)
QSvgRenderer(const QString &filename, QObject *parent = nullptr)
virtual ~QSvgRenderer()
bool animated() const
Qt::AspectRatioMode aspectRatioMode() const
QRectF boundsOnElement(const QString &id) const
QSize defaultSize() const
bool elementExists(const QString &id) const
int framesPerSecond() const
bool isAnimationEnabled() const
bool isValid() const
QtSvg::Options options() const
void setAnimationEnabled(bool enable)
void setAspectRatioMode(Qt::AspectRatioMode mode)
void setFramesPerSecond(int num)
void setOptions(QtSvg::Options flags)
void setViewBox(const QRect &viewbox)
void setViewBox(const QRectF &viewbox)
QTransform transformForElement(const QString &id) const
QRect viewBox() const
QRectF viewBoxF() const

パブリックスロット

bool load(QXmlStreamReader *contents)
bool load(const QByteArray &contents)
bool load(const QString &filename)
void render(QPainter *painter)
void render(QPainter *painter, const QRectF &bounds)
void render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF())

シグナル

void repaintNeeded()

静的パブリックメンバー

(since 6.8) void setDefaultOptions(QtSvg::Options flags)

詳細な説明

QSvgRenderer を使用すると、Scalable Vector Graphics (SVG) を、QWidget 、QImage 、QGLWidget を含む、あらゆるQPaintDevice のサブクラスにレンダリングすることができます。

QSvgRenderer は、静的な図形の読み込みやレンダリングといった SVG レンダリングの基本機能や、アニメーションなどのよりインタラクティブな機能をサポートする API を提供します。レンダリングはQPainter を使用して行われるため、SVG 図形はQPaintDevice のあらゆるサブクラス上でレンダリングすることができます。

SVG図形は、QSvgRendererの生成時に読み込まれるか、あるいは後でload()関数を使用して読み込まれます。データは、シリアル化されたXMLとして直接指定されるか、ファイル名を使用して間接的に指定されます。レンダラーの生成時またはそれ以降に有効なファイルが読み込まれた場合、isValid()はtrueを返します。そうでない場合はfalseを返します。 QSvgRendererは、指定されたペインターを使用して現在のドキュメント、またはアニメーション付きドキュメントの現在のフレームを描画するためのrender()スロットを提供します。

defaultSize() 関数は、現在読み込まれている SVG ファイルをレンダリングするために必要なスペースの量に関する情報を提供します。これは、QWidget のようなペイントデバイスにとって有用であり、こうしたデバイスは親レイアウトにサイズヒントを提供する必要がある場合が多いためです。描画のデフォルトサイズは、viewBox プロパティを使用して取得される可視領域とは異なる場合があります。

アニメーション付きのSVG描画がサポートされており、一連の関数やプロパティを使って簡単に制御できます。

  • animated() 関数は、描画にアニメーション情報が含まれているかどうかを示します。
  • framesPerSecond プロパティには、アニメーションの再生レートが格納されています。

最後に、QSvgRenderer クラスは、ドキュメントのレンダリングを更新する必要があるたびに発火するrepaintNeeded() シグナルを提供します。

関連項目: QSvgWidget 、 Qt SVG C++ Classes、および `QPicture` を参照してください。

プロパティのドキュメント

[since 6.7] animationEnabled : bool

このプロパティは、SVGにアニメーション要素が含まれている場合、そのアニメーションを実行すべきかどうかを決定します。

このプロパティを false に設定すると、アニメーションタイマーが停止します。このプロパティを true に設定すると、SVG にアニメーション要素が含まれている場合に限り、アニメーションタイマーが開始されます。

SVGにアニメーションが含まれていない場合、このプロパティは効果を持ちません。それ以外の場合は、このプロパティのデフォルト値はtrueとなります。

この列挙型は Qt 6.7 で導入されました。

アクセス関数:

bool isAnimationEnabled() const
void setAnimationEnabled(bool enable)

animated()も参照してください 。

aspectRatioMode : Qt::AspectRatioMode

レンダリングがSVGビューボックスのアスペクト比にどのように準拠するか

使用可能なモードは以下の通りです:

  • Qt::IgnoreAspectRatio (デフォルト):アスペクト比は無視され、レンダリングはターゲットの境界に合わせて引き伸ばされます。
  • Qt::KeepAspectRatio: アスペクト比を維持しつつ、レンダリングをターゲット境界内で中央に配置し、可能な限り大きく拡大します。

アクセス関数:

Qt::AspectRatioMode aspectRatioMode() const
void setAspectRatioMode(Qt::AspectRatioMode mode)

framesPerSecond : int

このプロパティには、表示される1秒あたりのフレーム数が格納されます

現在のドキュメントにアニメーションが含まれていない場合、1秒あたりのフレーム数は0になります。

アクセス関数:

int framesPerSecond() const
void setFramesPerSecond(int num)

関連項目: animated()。

[since 6.7] options : QtSvg::Options

このプロパティは、SVGファイルの解析およびレンダリングに関するさまざまな機能を有効または無効にするために使用できる、QtSvg::Option フラグのセットを保持しています。

このプロパティを有効にするには、`before ` が実行される前に、このプロパティを設定する必要があります。load() は、SVG ソースパラメータを受け取るコンストラクタが、生成中に読み込みを行うことに注意してください。

この列挙型は Qt 6.7 で導入されました。

アクセス関数:

QtSvg::Options options() const
void setOptions(QtSvg::Options flags)

setDefaultOptionsも参照してください 。

viewBox : QRectF

このプロパティは、ドキュメントの表示領域を論理座標で指定する矩形を保持します

アクセス関数:

QRectF viewBoxF() const
void setViewBox(const QRect &viewbox)
void setViewBox(const QRectF &viewbox)

メンバ関数のドキュメント

QSvgRenderer::QSvgRenderer(QObject *parent = nullptr)

指定されたparent を使用して、新しいレンダラーを作成します。

QSvgRenderer::QSvgRenderer(QXmlStreamReader *contents, QObject *parent = nullptr)

指定されたparent を使用して新しいレンダラーを構築し、contents で指定されたストリームリーダーを使用してSVGデータを読み込みます。

QSvgRenderer::QSvgRenderer(const QByteArray &contents, QObject *parent = nullptr)

指定されたparent を使用して新しいレンダラーを構築し、contents で指定されたバイト配列からSVGデータを読み込みます。

QSvgRenderer::QSvgRenderer(const QString &filename, QObject *parent = nullptr)

指定されたparent を使用して新しいレンダラーを生成し、指定されたfilename のSVGファイルの内容を読み込みます。

[virtual noexcept] QSvgRenderer::~QSvgRenderer()

レンダラーを破棄します。

bool QSvgRenderer::animated() const

現在のドキュメントにアニメーション要素が含まれている場合は true を返し、そうでない場合は false を返します。

framesPerSecond()も参照してください 。

QRectF QSvgRenderer::boundsOnElement(const QString &id) const

指定されたid を用いて、項目の境界矩形を返します。親要素の変換行列は、この要素の境界に影響を与えません。

transformForElement()も参照してください 。

QSize QSvgRenderer::defaultSize() const

ドキュメント内容のデフォルトのサイズを返します。

bool QSvgRenderer::elementExists(const QString &id) const

指定されたid を持つ要素が、現在解析中のSVGファイル内に存在し、かつレンダリング可能な要素である場合にtrueを返します。

注:このメソッドは、レンダリング可能な要素に対してのみ true を返します。つまり、fill や stroke スタイルプロパティの一部とみなされる要素(例:radialGradients)は、たとえ「id」属性が指定されていても、このメソッドでは検出されません。

bool QSvgRenderer::isValid() const

有効な現在のドキュメントが存在する場合、true を返します。そうでない場合は false を返します。

[slot] bool QSvgRenderer::load(QXmlStreamReader *contents)

contents に指定された SVG を読み込み、コンテンツの解析に成功した場合は true を返し、そうでない場合は false を返します。

リーダーは、現在の位置から使用されます。contents がnull の場合、動作は未定義となります。

注:この スロットは オーバーロードされています。このスロットに接続するには:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        svgRenderer, qOverload(&QSvgRenderer::load));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        svgRenderer, [receiver = svgRenderer](QXmlStreamReader *contents) { receiver->load(contents); });
その他の例や手法については、「オーバーロードされたスロットへの接続」を参照してください。

[slot] bool QSvgRenderer::load(const QByteArray &contents)

指定されたSVG形式のcontents を読み込み、コンテンツの解析に成功した場合はtrueを返し、失敗した場合はfalseを返します。

注:この スロットは オーバーロードされています。このスロットに接続するには:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        svgRenderer, qOverload(&QSvgRenderer::load));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        svgRenderer, [receiver = svgRenderer](const QByteArray &contents) { receiver->load(contents); });
その他の例や手法については、「オーバーロードされたスロットへの接続」を参照してください。

[slot] bool QSvgRenderer::load(const QString &filename)

filename で指定された SVG ファイルを読み込み、コンテンツの解析に成功した場合は true を返し、失敗した場合は false を返します。

注:この スロットは オーバーロードされています。このスロットに接続するには:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        svgRenderer, qOverload(&QSvgRenderer::load));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        svgRenderer, [receiver = svgRenderer](const QString &filename) { receiver->load(filename); });
その他の例や手法については、「オーバーロードされたスロットへの接続」を参照してください。

[slot] void QSvgRenderer::render(QPainter *painter)

指定されたpainter を使用して、現在のドキュメント、またはアニメーション付きドキュメントの現在のフレームをレンダリングします。

注:この スロットは オーバーロードされています。このスロットに接続するには:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        svgRenderer, qOverload(&QSvgRenderer::render));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        svgRenderer, [receiver = svgRenderer](QPainter *painter) { receiver->render(painter); });
その他の例や手法については、「オーバーロードされたスロットへの接続」を参照してください。

[slot] void QSvgRenderer::render(QPainter *painter, const QRectF &bounds)

指定されたペインター内の指定されたbounds に対して、指定されたpainter を使用して、現在のドキュメント、またはアニメーション付きドキュメントの現在のフレームを描画します。bounds が空でない場合、SVGで指定されたアスペクト比は無視され、出力は に収まるように拡大縮小されます。

注:この スロットは オーバーロードされています。このスロットに接続するには:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        svgRenderer, qOverload(&QSvgRenderer::render));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        svgRenderer, [receiver = svgRenderer](QPainter *painter, const QRectF &bounds) { receiver->render(painter, bounds); });
その他の例や手法については、「オーバーロードされたスロットへの接続」を参照してください。

[slot] void QSvgRenderer::render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF())

指定された要素を、指定されたpainter を用いて、指定されたbounds 上でelementId で描画します。バウンディング矩形が指定されていない場合、SVG要素はペイントデバイス全体にマッピングされます。

注:この スロットは オーバーロードされています。このスロットに接続するには:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        svgRenderer, qOverload(&QSvgRenderer::render));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        svgRenderer, [receiver = svgRenderer](QPainter *painter, const QString &elementId, const QRectF &bounds) { receiver->render(painter, elementId, bounds); });
その他の例や手法については、「オーバーロードされたスロットへの接続」を参照してください。

[signal] void QSvgRenderer::repaintNeeded()

このシグナルは、ドキュメントのレンダリングを更新する必要があるたびに発せられます。通常、アニメーションを目的として使用されます。

[static, since 6.8] void QSvgRenderer::setDefaultOptions(QtSvg::Options flags)

レンダラーの作成時に使用されるオプションフラグを `flags` に設定します。デフォルトでは、フラグは設定されません。

実行時には、環境変数 `QT_SVG_DEFAULT_OPTIONS` によってこの設定を上書きできます。

この関数は Qt 6.8 で導入されました。

QTransform QSvgRenderer::transformForElement(const QString &id) const

指定されたid を持つ要素の変換行列を返します。この行列は、その要素の親要素の変換行列の積となります。要素自体の変換は含まれません。

論理座標系における要素のバウンディング矩形を求めるには、boundsOnElement() から返される矩形にこの行列を適用します。

boundsOnElement()も参照してください 。

QRect QSvgRenderer::viewBox() const

viewBoxF().toRect() を返します。

setViewBox() およびviewBoxF()も参照してください 。

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