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 はPainting クラスの一部です。
注:このクラスのすべての関数は再入可能です。
プロパティ
|
パブリック関数
| 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.