Qt Image Formatsにおけるベクター画像形式
Qtは、グラフィックデータを読み込むための多くの標準ファイル形式をサポートしており、アプリケーションが他のツールで作成されたコンテンツを取り込むことを可能にしています。
この記事では、ベクター画像に焦点を当て、Qt アプリケーションで使用するためのベクターグラフィックスコンテンツを作成する際に考慮すべき点について解説します。
注: Qt による 2D グラフィックスのサポートに関する一般的な情報については 、ドキュメントの「Qt における 2D グラフィックス」を参照してください。
ファイル形式:SVG
SVG ファイルは、Qt において 2 つの異なる方法で読み込むことができます Qt Quick:Imageコンポーネントを使用したソフトウェアラスタライズされた画像として、あるいはVectorImage によるハードウェアアクセラレーションレンダリングを使用する方法(svgtoqml を使用して事前にファイルを変換することを含む)です。
さらに、QSvgRenderer を使用すると、ソフトウェアラスタライザに一般的にアクセスできます。QSvgWidget およびQGraphicsSvgItem は、SVG コンテンツをアプリケーションに統合するための便利な API を提供します。 Qt Widgets アプリケーションに統合するための便利なAPIを提供します。
基本的に、Qt SVG は SVG 1.2 Tiny プロファイルの静的機能をサポートしています。このプロファイルでサポートされている機能の詳細なリストは、SVG 1.2 Tiny 仕様書で確認できます。
さらに、特定の拡張機能もサポートされています。
SVG のインタラクティブ機能はサポートされていませんが、インタラクションはどちらでも簡単に実装できます。 Qt Quick または Qt Widgetsのいずれかを使用して、簡単に実装できます。また、SMIL 形式または CSS キーフレームを使用した、特定のアニメーションタイプもサポートされています。
以下に、サポートされている機能とサポートされていない機能の概要を示す大まかなリストを記載します。サポートされていない機能は、可能な限り無視されるため、サポートされていない機能に依存する SVG ファイルも表示されますが、欠落やエラーが生じる可能性があります。
| 変形 | サポート対象 |
| 位置 | 👍 |
| スケール | 👍 |
| ローテーション | 👍 |
| 傾き | 👍 |
| 図形 | 対応 |
| 楕円/円 | 👍 |
| 長方形 | 👍 |
| ポリラインおよびポリゴン | 👍 |
| ベジェ曲線 | 👍 |
| マーカー | 👍 |
| シンボル | 👍 |
| 形状のレンダリング可能 | 対応 |
| 塗りつぶし | 👍 |
| ストローク | 👍 |
| 線形グラデーション | 👍 |
| 放射状グラデーション | 👍 |
| 円錐グラデーション | 👍 |
| パターン | 👍 |
| グラデーションストローク | 👍 |
| ストロークキャップ | 👍 |
| ストロークの接続 | 👍 |
| 線のスタイル(破線など) | 👍 |
| 装飾用ストローク | 👍 |
| テキスト | 対応 |
| スパン | 👍 |
| グリフ | 👍 |
| 後処理エフェクト | 対応 |
| マスク | 👍 |
| feColorMatrix | 👍 |
| feFlood | 👍 |
| feOffset | 👍 |
| feGaussianBlur | 👍 |
| feMerge | 👍 |
| 残りのフィルター | 🚫 |
| CSSアニメーション | 対応済み |
| 色 | 👍 |
| グラデーション | 👍 |
| 不透明度 | 👍 |
| 変形 | 👍 |
| パスオフセット | 👍 |
| モーションパス | 👍 |
| イージングカーブ | 👍 |
| その他のプロパティ | 🚫 |
| SMILアニメーション | 対応 |
| animateTransform | 👍 |
| animateColor | 👍 |
| animate | 🚫 |
| animateMotion | 🚫 |
| set | 🚫 |
| その他 | 対応 |
| ラスター画像 | 👍 |
| 要素を使用 | 👍 |
| 要素を切り替える | 👍 |
| クリップパス | 🚫 |
| マルチメディア | 🚫 |
| スクリプト | 🚫 |
| リンク | 🚫 |
ファイル形式: Lottie
SVGと同様に、QtではLottie形式のファイルを読み込む方法がいくつかあります。
LottieAnimation 型は、QSvgRenderer がSVGに対して行うのと同様に、画像を読み込み、ソフトウェアラスタライザを使用して表示します。
さらに、VectorImage とlottietoqmlツールを使用することで、ハードウェアアクセラレーションによるレンダリングが可能です。
VectorImage で Lottie ファイルを使用するには、アプリケーションに同梱されているvectorimageformats プラグインを Qt Lottie Animation に同梱されているVectorImage プラグインを、アプリケーションと一緒にデプロイする必要があります。また、 のassumeTrustedSource プロパティをtrue に設定する必要があります。アニメーション再生の詳細な制御については、LottieVectorImageController を参照してください。
lottietoqmlツールを使用すると、Lottie ソースファイルを QML に事前変換できます。その例は、lottietoqml のサンプルで確認できます。
以下は、LottieAnimation 型(ソフトウェアラスタライザ)およびVectorImage (lottietoqmlを使用したファイルの事前変換も含む)がサポートする主要な機能の一覧です。
| 変換 | サポート対象 |
| 位置 | 👍 |
| スケール | 👍 |
| ローテーション | 👍 |
| 傾き | 👍 |
| 不透明度 | 👍 |
| アンカーポイント | 👍 |
| 自動方向調整 | 👍 |
| 図形 | 対応 |
| 楕円/円 | 👍 |
| 長方形 | 👍 |
| 角丸長方形 | 👍 |
| ポリスター | 👍 |
| ベジェ曲線 | 👍 |
| トリムされたパス | 👍 |
| 形状のレンダリング | 対応済み |
| 塗りつぶし | 👍 |
| ストローク | 👍 |
| 線形グラデーション | 👍 |
| 放射状グラデーション | 👍 |
| グラデーションストローク | 👍 |
| ストロークキャップ | 👍 |
| ストロークの接続 | 👍 |
| 線のスタイル(破線など) | 👍 |
| テキスト | 対応 |
| 塗りつぶし | 👍 |
| ストローク | 🚫 |
| フォント | 👍 |
| グリフ | 👍 |
| 後処理エフェクト | 対応 |
| アルファマット | 👍 |
| 輝度マット | 👍 |
| レイヤーエフェクト | 🚫 |
| パスの結合 | 対応 |
| 追加 | 👍 |
| 引き算 | 🚫 |
| 共通部分 | 🚫 |
| マスク | 対応 |
| マスクパス | 👍 |
| 結合 | 👍 |
| その他の演算 | 🚫 |
| アニメーション | 対応 |
| 色 | 👍 |
| グラデーション | 👍 |
| 不透明度 | 👍 |
| 変形 | 👍 |
| パスの補間 | 👍 |
| トリム | 👍 |
| マーカー | 🚫 |
| パスの結合 | 🚫 |
| 残りのプロパティ | 🚫 |
| イージングカーブ | 👍 |
| タイムストレッチ | 👍 |
| タイムリマップ | 👍 |
| その他 | 対応 |
| ラスター画像 | 👍 |
| プリコンプレイヤー | 👍 |
| 式 | 🚫 |
ファイル形式:ベクター画像形式としてのフォントファイル
SVGなどの従来のベクターグラフィックス形式に加え、ベクターグラフィックスアセットがグリフとして保存されたカスタムフォントファイルを利用することも可能です。
これには、シンプルなイラストをテキストラベル内にインラインで配置でき、テキストと同様の書式設定が可能になるという利点があります。これにより、画像とテキストの位置合わせが容易になります。
この目的でフォントファイルを使用することは、大規模なアイコンライブラリを配布する便利な方法となるほか、実行時に置き換え可能なテーマを提供することも可能です。
ただし、Qt におけるフォントの使用はテキストの生成に最適化されているため、VectorImage のような専用のベクター画像コンポーネントの代替としてアイコンフォントを使用する際には、いくつかの点に留意する必要があります。
まず第一に、カラーフォントは常に指定されたピクセルサイズで事前にラスタライズされます。つまり、このようなテキスト項目に変形を適用すると、スケーリングによるアーティファクトが発生します。例えば、ズームが必要なイラストの場合は、VectorImage を使用する方が望ましいです。
また、アニメーション付きのベクター画像についても、専用のコンポーネントを使用する方が望ましいです。可変フォント形式の拡張機能によりモーフィングアニメーションが可能ではありますが、Qtのフォントシステムはこのような用途向けに最適化されていません。そのため、フォントの可変軸をアニメーションさせることは、他のベクター画像形式を使用する場合に比べて効率が悪くなります。
したがって、アニメーションや多色ベクター画像については、通常、SVGなどの形式を使用することが推奨されます。単色で静的な画像については、フォントを使用することも、一定の利点がある選択肢の一つです。
注: Qt Quick のコントロールにおける標準的なアイコンサポートも参照してください 。
© 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.