このページでは

svgtoqml

svgtoqml は、Qtに同梱されているコマンドラインツールで、SVGドキュメントをQMLファイルに変換します。このQMLファイルは、Qt Quick アプリケーションのコンポーネントとして使用できます。「天気予報のサンプル」には、このツールを使用して生成された複数のQMLファイルが含まれています。

概要

svgtoqml は、SVGファイルをQt Quick プリミティブを使用するQMLファイルに変換します。Qt Quick はスケーラブルベクターグラフィックス(SVG)をサポートしているため、生成されたアイテムは可能な限りスムーズに変形できます。基本として、このツールはSVG Tiny 1.2プロファイルの静的機能の大部分をサポートしています。 ケースバイケースで判断される特定の追加機能もサポートされています。インタラクティブな機能やアニメーションはサポートされていません。

使用方法

svgtoqml の基本的な使用方法は、入力ファイルと出力ファイルを指定することです:svgtoqml input.svg output.qml 。これにより、input.svg ファイルが読み込まれ、output.qml 内の対応するQt Quick シーンに変換されます。このシーンは、Qt Quick アプリケーションの一部として使用できます。

さらに、以下のオプションもサポートしています:

オプション説明
--no-assume-trusted-source入力が信頼できないファイルであることを示し、追加のチェックと制限を有効にする必要があります。デフォルトでは、SVGファイルはAssumeTrustedSource option で解析されます。この引数を指定すると、そのオプションが無効になります。
--copyright-statement <string>生成されたファイルの先頭に <string> をコメントとして追加します。
-c,--curve-renderer曲線レンダラーバックエンドを有効にします。 Qt Quick Shapes。これにより、マルチサンプリングを行わずにシーン内で滑らかでアンチエイリアス処理された形状を実現できますが、若干のオーバーヘッドが発生します。
-a,--asynchronous-shapes生成されたシーン内のすべてのShape 要素に対して、{QtQuick.Shapes::Shape::asynchronous}{asynchronous}モードを有効にします。これにより、CPU使用率と応答性が向上する可能性があります。
-p,--optimize-pathsパスをQMLファイルに書き込む前に最適化を行い、その後の読み込みやレンダリングを高速化する可能性があります。
--outline-stroke-mode元のパスではなく、塗りつぶされた図形の輪郭(コンター)をストロークします。
-t,--type-name <string>Shape の代わりに、出力では型名<string>が使用されます。これにより、カスタムアイテムを使用してShape アイテムのデフォルトの挙動を上書きできるようになります。
-v,--view生成される予定のQt Quick アイテムのプレビューを表示します。

qt_target_qml_from_svg()CMake関数を使用することで、ビルドからこのツールを自動的に呼び出すことができます。

他のオプションとの比較

Qt Quick に SVG コンテンツを組み込むには、複数のオプションがあります。以下では、svgtoqml がその中においてどのような位置づけにあるかについて概要を説明します。

との比較Qt SVG

Qt SVG は、SVGファイル用のパーサーとソフトウェアレンダラーを提供するモジュールです。さらに、画像ローダープラグインも含まれているため、Qt Quick 内のImage 要素からSVGファイルを直接読み込むことができます。SVGはラスタライズされ、指定されたサイズでキャッシュされるため、再描画のオーバーヘッドはごくわずかです。 しかし、ピクセル化せずに画像を拡大表示するには、異なるサイズで再読み込みを行う必要があり、その処理にはコストがかかる可能性があります。

svgtoqml (およびVectorImage コンポーネント)は、同じコンテンツをレンダリングするための代替手段です。Qt Quick に読み込まれた後は、シーンをレンダリングするために必要なジオメトリデータをGPUメモリに保持したまま、トランスフォームを変更することができます。したがって、ベクター画像はごくわずかなオーバーヘッドで異なるスケールで再描画可能です。

ただし、アプリケーションの実行中に画像サイズが変わらない場合は、SVGをImage として読み込む方が効率的です。この場合、SVGが常に可能なサイズの一部でしかレンダリングされないのであれば、PNG など、読み込み効率の高い画像形式に事前にラスタライズすることを検討してください。

VectorImageとの比較

VectorImage コンポーネントは、svgtoqml と同じ基本的な機能を提供しますが、Qt Quick シーンをQMLファイルとして事前に生成する代わりに、実行時にシーンを作成します。これにより、ビルド時に提供されていないSVGファイルを読み込むことが可能になり、柔軟性が高まります。svgtoqml を使用してシーンを事前生成することで、読み込み前にシーンを最適化できます。したがって、ビルド時に利用可能なファイルについては、svgtoqml を使用することを推奨します。

PathSvg との比較

PathSvg コンポーネントは、 Qt Quick Shapes モジュールの一部です。これは、SVGで使用される構文でパスを定義する方法を提供し、パスの制御点は文字列として指定されます。 SVGファイルの読み込みには対応していないため、svgtoqml の直接的な代替とはなりません。複雑なSVGにアプリケーションで必要な特定の形状が含まれている場合、そのパス記述をPathSvg にコピーする方が、ファイル全体を生成するよりも便利な場合があります。

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