『Qt Quick 』における重要な概念 - 状態、遷移、アニメーション
現代のユーザーインターフェースにおいて、状態間の遷移やユーザーインターフェースのアニメーションは極めて有益です。これらはQt Quick における第一級の概念です。
このページでは、状態、状態遷移、およびプロパティアニメーションの概念について説明します。どの概念が重要で、その理由、そしてそれらの概念がどのように相互に関連しているかを詳しく解説します。また、これらの概念を実装するためにQt Quick が提供するQML型に関する詳細情報へのリンクも掲載しています。
状態
特定のビジュアルアイテムの状態とは、そのビジュアルアイテム内の個々の構成要素がどのように、どこに表示されるかを記述する情報の集合、およびその状態に関連付けられたすべてのデータを指します。ユーザーインターフェース内のほとんどのビジュアルアイテムは、状態の数が限られており、それぞれの状態には明確に定義されたプロパティがあります。
たとえば、リスト内の要素は「選択されている」か「選択されていない」かのいずれかであり、選択されている場合は、現在アクティブな単一の選択であるか、選択グループの一部であるかのいずれかになります。
これらの各状態には、特定の視覚的外観(通常、ハイライト、展開など)が関連付けられている場合があります。
Qt Quick は、そのセマンティクスを定義し、動作やアニメーションをトリガーするために使用できるプロパティを持つ `State ` タイプを提供します。詳細については、Qt Quick 状態に関するドキュメントを参照してください。
遷移
視覚的な項目がある状態から別の状態へ遷移すると、その項目の外観が変化します。遷移とは、2 つの状態間の「境界」のことです。アプリケーションの他の部分には、特定の状態に入ったときやその状態を離れたときにトリガーされる動作がある場合があるため、遷移によって他のイベントが発生することもあります。
Qt Quick Transition 型を提供しており、この型には、アプリケーションがある状態から別の状態へ変化した際に何が起こるかを定義するプロパティがあります。遷移に関する詳細については、「状態変化時の遷移」に関するドキュメントを参照してください。
アニメーション
状態間の遷移時には、滑らかなアニメーションを使用することで、ユーザーの遷移体験を向上させることができます。画面上の急激かつ予期せぬ変化は、ユーザー体験を損なうため、避けるべきです。
リスト内の要素が選択された場合、色の変化(無地からハイライト表示へ)をアニメーションで表現できます。リスト内での要素の位置が変更された場合、ユーザーの視線がその変化を追えるよう、滑らかなアニメーションで移動させることができます。
Qt Quick では、さまざまなアニメーションおよびトランジションの種類を通じて、こうしたタイプのアニメーションがサポートされています。これらの種類や使用方法については、『 Qt Quick におけるアニメーションとトランジション』のドキュメントを参照してください。
プロパティの代入のアニメーション化
アニメーションは、状態や状態間の遷移だけに関連するものではありません。たとえば、特定の状態とは関連付けられていない他のイベントによって、アニメーションがトリガーされる場合もあります。
変更の原因にかかわらず、ビジュアルアイテムの特定のプロパティの変更を常にアニメーション化することは、多くの場合有益です(たとえば、不透明度効果など)。Qt Quick では、Behavior 型が提供されており、これによりクライアントはプロパティの変更に対するアニメーションの挙動を指定できます。Behavior 型は、QMLオブジェクトのプロパティ修飾子の例です。
Behavior 型を使用してデフォルトのプロパティ変更アニメーションを提供する方法の詳細については、デフォルトのプロパティアニメーションに関するドキュメントを参照してください。
なお、(Behavior 型を介して)デフォルトのプロパティアニメーションを状態遷移アニメーションと組み合わせて使用すると、場合によっては未定義の挙動が生じる可能性がある点に注意してください。このトピックの詳細については、「Qt Quick Behaviorsと状態の併用」に関するドキュメントを参照してください。
アニメーター
Animator 型は、QMLオブジェクトをバイパスし、シーングラフ内のプリミティブに対して直接操作を行う特殊なアニメーションです。これにより、Animatorベースのアニメーションは(該当する場合)、シーングラフのレンダリングスレッド上で実行され、UIがブロックされている場合でもアニメーションを継続できるという利点があります。
Qt Quick 以下のAnimatorタイプが提供されています:
- XAnimator - `Item` の水平位置をアニメーション化します。
- YAnimator - `Item`の垂直位置をアニメーション化します。
- ScaleAnimator - `Item`のスケール係数をアニメーション化します。
- RotationAnimator - `Item`の回転をアニメーション化します。
- OpacityAnimator - `Item`の不透明度をアニメーション化します。
- UniformAnimator -ShaderEffect 内の「uniform」をアニメーション化します。
アニメーション付きスプライト
アニメーション付きスプライトの概念は、このページの他の箇所で使用されている「アニメーション」の概念とは異なります。アニメーション付き画像やスプライトを作成または使用したい場合は、スプライトアニメーションに関するドキュメントを参照してください。
© 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.