このページでは

Qt のベクター画像フォーマット

Qt はグラフィックデータを読み込むための多くの標準的なファイルフォーマットをサポートしており、他のツールで作成されたコンテンツをインポートすることができます。

この記事ではベクター画像に焦点を当て、Qt アプリケーションで使用するためにベクター画像を作成する際の注意点を説明します。

注意: Qt の 2D グラフィックスのサポートに関する一般的な情報は、Qt の 2D グラフィックスのドキュメントを参照してください。

ファイルフォーマットSVG

SVG ファイルは、次の 2 つの方法で読み込むことができます。 Qt Quick:Imageコンポーネントを使用してソフトウェアでラスタライズされた画像として、またはVectorImage を使用してハードウェアで加速されたレンダリングとしてです(svgtoqml を使用して事前にファイルを変換することもできます)。

さらに、QSvgRenderer はソフトウェアラスタライザーへの一般的なアクセスを提供する。QSvgWidgetQGraphicsSvgItem は SVG コンテンツをアプリケーションに統合するための便利な API を提供する。 Qt Widgetsアプリケーションに統合するための便利なAPIを提供しています。

ベースラインとして、Qt は SVG 1.2 Tiny プロファイルの静的機能をサポートしています。このプロファイルでサポートされている機能の詳細なリストは、SVG 1.2 Tiny 仕様にあります。

さらに、いくつかの拡張機能もサポートされています。これらは現在のところソフトウェアラスタライザーのみでサポートされており、VectorImagesvgtoqml のハードウェアアクセラレーションレンダラーではサポートされていない。

SVG のインタラクティブ機能はサポートされていないが、インタラクションは Qt Quickまたは Qt Widgets.SMILフォーマットかCSSキーフレームを使った、いくつかの特定のアニメーションタイプもサポートされています。

以下は、サポートされる機能とサポートされない機能の概要を示すハイレベルなリストです。サポートされていない機能は可能な限り無視されるので、サポートされていない機能に依存する SVG ファイルは表示されるが、漏れやエラーがあるかもしれない。

高レベル機能ソフトウェアラスタライザーVectorImageコメント
変換はいあり
基本図形はいはい円、長方形、楕円、直線、ポリライン、多角形
任意形状はいあり任意のベジェ曲線と直線から構築された複合パス
ラスター画像はいあり埋め込みとファイルシステムへの保存の両方
間接法ありあり特に "use "要素
条件処理はいあり特に "switch "要素
単純なテキストレイアウトはいはい
埋め込みフォントはいあり
ベタ塗りありあり
グラデーション塗りつぶしありあり
カスタマイズ可能なストロークありありカスタマイズ可能な幅、ラインキャップ、ライン結合、ダッシュ
コスメティックストロークありなしビューに合わせて拡大縮小しないアウトライン
グラデーションストロークはいあり
マルチメディアなしいいえ
スクリプトいいえいいえ
リンクなしなし

さらに、以下の拡張機能が SVG 1.1 と SVG 2.0 からサポートされている:

高レベル機能ソフトウェアラスタライザVectorImageコメント
マスクはいはい
クリップパスなしいいえ
パターンはいなし
マーカーはいなし
再利用可能なシンボルありあり
後処理フィルターありありfeColorMatrix、feFlood、feGaussianBlur、feOffset、feMerge。

最後に、以下のプロパティ・アニメーションがサポートされています(ここに記載されていないアニメーションは現在サポートされていません)。アニメーションは、最良の結果を得るために CSS keyframes フォーマットでエクスポートする必要があります。

アニメーション機能ソフトウェアラスタライザーVectorImageコメント
変形アニメーションはいあり
カラーアニメーションありあり
不透明度アニメーションありあり
オフセットパスアニメーションありありパスに沿ったアイテムの位置と方向のアニメーション

ファイルフォーマットLottie

SVG と同様に、Qt では Lottie フォーマットのファイルを読み込む方法が異なります。

LottieAnimation タイプは画像を読み込み、QSvgRenderer が SVG に対して行うのと同じように、ソフトウェアラスタライザを使って表示します。

さらに、VectorImagelottietoqmlツールを使えば、ハードウェアアクセラレーションによるレンダリングも可能です。

Lottie ファイルをVectorImage で使用するには、モジュールに含まれるvectorimageformats プラグインを Qt Lottie Animationモジュールと一緒にデプロイする必要があります。また、VectorImageassumeTrustedSource プロパティをtrue に設定する必要があります。

lottietoqmlツールを使って、LottieのソースファイルをQMLに変換することができます。その例は、lottietoqml Exampleにあります。

以下は、LottieAnimation タイプ(ソフトウェア・ラスタライザー)とVectorImagelottietoqmlを使ったファイルのプリコンバートも含む)がサポートするハイレベルな機能のリストです。

高レベル機能LottieAnimationVectorImageコメント
変換はいはい
形状はいはい
ソリッドフィルはいあり
グラデーション塗りつぶしはいあり
カスタマイズ可能なストロークありありカスタマイズ可能な幅、ラインキャップ、ライン結合、ダッシュ
グラデーションストロークなしなし
画像レイヤーありあり埋め込みデータのみ
合成前レイヤーありあり
パスのトリミングありあり
マットはいはい
マスクいいえなし
リピーターありなし
レイヤー効果塗りつぶし効果のみなし
テキストレイヤーなしなし
マルチメディアなしなしオーディオおよびカメラレイヤーはサポートされていません。
エクスプレッションいいえなし
3Dレイヤーなしなし
タイムリマッピングなしなし

原理的には、Lottieフォーマットのほぼすべてのプロパティをアニメーション化することができます。アニメーション可能なプロパティの広範なサポートについては、LottieAnimation を使用してください。VectorImage (およびlottietoqml)は、アニメーションを作成するために一般的に使用されるプロパティの選択されたサブセットのサポートを提供します。

高レベルの機能LottieAnimationVectorImageコメント
変形アニメーションはいはい
パスのトリムアニメーションありあり
カラーアニメーションはいはい
不透明度アニメーションありはい
パスのアニメーションはいはい図形の制御点のモーフィングアニメーション
パスに沿った移動はいありパスに沿ったアイテムの位置と向きのアニメーション
その他のプロパティのアニメーションはいなし

ファイルフォーマットベクター画像フォーマットとしてのフォントファイル

SVGのようなベクターグラフィックスのための従来のフォーマットに加えて、ベクターグラフィックス資産がグリフとして保存されているカスタムフォントファイルを利用することも可能です。

これには、単純なイラストをテキストラベルにインライン化し、テキストと同様の組版特性を持たせることができるという利点がある。これにより、画像とテキストの位置合わせが容易になります。

この目的のためにフォントファイルを使用することは、大規模なアイコンライブラリを配布する便利な方法でもあり、ランタイムで置き換え可能なテーマを提供することもできます。

ただし、Qt でのフォントの使用はテキストを生成するために最適化されているため、VectorImage のような特殊なベクター画像コンポーネントの代替としてアイコンフォントを使用する場合には、いくつかの考慮事項があります。

まず第一に、 カ ラ ーフ ォ ン ト はつねに、 指定 さ れた ピ ク セルサ イ ズで ラ ス タ リ ゼーシ ョ ン さ れます。こ れは こ の よ う なテ キ ス ト ア イ テ ムに変換を適用す る と 、 拡縮ア ーテ ィ フ ァ ク ト が発生す る こ と を意味 し ます。た と えば、 ズームが必要な イ ラ ス ト では、VectorImage を用いる こ と が推奨 さ れます。

アニメートされたベクター画像にも、特殊化されたコンポーネントを使うのが望ましい。可変フォントフォーマットの拡張はモーフィングアニメーションを可能にしますが、これはQtのフォントシステムが最適化された用途ではありません。したがって、フォントの可変軸をアニメーションさせることは、他のベクター画像フォーマットを使うよりも効率が悪くなります。

そのため、アニメーションや多色のベクター画像には、SVGのような形式を使うのが一般的です。単一色で静的なものについては、フォントを使用することは、ある種の利便性を持つオプションです。

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