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 に設定するとアニメーションタイマーは停止する。SVG がアニメーション要素を含んでいる場合、このプロパティを true に設定するとアニメーションタイマーが開始される。

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 ファイルに存在し、レンダリング可能な要素である場合に真を返す。

注意:このメソッドはレンダリング可能な要素に対してのみ真を返す。つまり、塗りつぶし/ストロークスタイルプロパティの一部とみなされる要素、例えば radialGradients は、"id" 属性でマークされたタフな要素であっても、このメソッドでは見つからない。

bool QSvgRenderer::isValid() const

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

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

指定された SVG をcontents に読み込み、内容が正常に解析された場合は true を返し、そうでない場合は false を返す。

リーダは現在置かれている位置から利用される。contentsnull の場合の動作は未定義。

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

指定 さ れた SVG 形式contents を読み込み、 内容が正 し く 解析 さ れた場合には true を返し、 そ う でなければ false を返す。

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

filename で指定された SVG ファイルを読み込み、内容が正常に解析された場合は true を返し、そうでない場合は false を返す。

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

与えられたpainter を使って、 現在のドキュメント、 あるいはアニメーション化されたドキュメントの現在のフレームをレンダリングします。

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

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

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

指定された要素を、指定されたpainter を用いてelementId で、指定されたbounds 上にレンダリングする。外接矩形が指定されない場合、 SVG 要素はペイントデバイス全体にマップされる。

[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()も参照してください

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