QVariantAnimation Class
QVariantAnimation クラスは、アニメーションの基底クラスを提供します。詳細...
| ヘッダー: | #include <QVariantAnimation> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| 継承元: | QAbstractAnimation |
| 継承元: |
- 継承されたメンバーを含むすべてのメンバーの一覧
- QVariantAnimationはAnimation Frameworkの一部です。
パブリック型
プロパティ
|
|
パブリック関数
| QVariantAnimation(QObject *parent = nullptr) | |
| virtual | ~QVariantAnimation() |
| QBindable<int> | bindableDuration() |
| QBindable<QEasingCurve> | bindableEasingCurve() |
| QVariant | currentValue() const |
| QEasingCurve | easingCurve() const |
| QVariant | endValue() const |
| QVariant | keyValueAt(qreal step) const |
| QVariantAnimation::KeyValues | keyValues() const |
| void | setDuration(int msecs) |
| void | setEasingCurve(const QEasingCurve &easing) |
| void | setEndValue(const QVariant &value) |
| void | setKeyValueAt(qreal step, const QVariant &value) |
| void | setKeyValues(const QVariantAnimation::KeyValues &keyValues) |
| void | setStartValue(const QVariant &value) |
| QVariant | startValue() const |
再実装されたパブリック関数
| virtual int | duration() const override |
シグナル
| void | valueChanged(const QVariant &value) |
保護された関数
| virtual QVariant | interpolated(const QVariant &from, const QVariant &to, qreal progress) const |
| virtual void | updateCurrentValue(const QVariant &value) |
再実装された保護関数
| virtual bool | event(QEvent *event) override |
| virtual void | updateCurrentTime(int) override |
| virtual void | updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) override |
関連する非メンバー変数
| void | qRegisterAnimationInterpolator(QVariant (*func)(const T &, const T &, qreal)) |
詳細説明
このクラスは「The Animation Framework」の一部です。プロパティおよびアイテムのアニメーションの基底クラスとして機能し、共通の機能を提供する関数を備えています。
このクラスはQVariantに対して補間処理を行いますが、補間された値の使用についてはサブクラスに委ねています。現在、QtではQtプロパティをアニメーション化するQPropertyAnimation が提供されています。このようなプロパティをアニメーション化したい場合は、QPropertyAnimation クラスの説明を参照してください。
その後、setStartValue() およびsetEndValue() を呼び出してプロパティの開始値と終了値を設定し、最後にstart() を呼び出してアニメーションを開始できます。QVariantAnimation はターゲットオブジェクトのプロパティを補間し、valueChanged() を発行します。現在の値の変化に対応するには、updateCurrentValue() 仮想関数を再実装するか、当該シグナルに接続する必要があります。
また、開始値と終了値の間に位置する指定されたステップで値を設定することも可能です。その場合、補間は指定されたステップでこれらの点を通過します。なお、開始値と終了値は、0.0 および 1.0 におけるキー値として定義されていることに注意してください。
QVariantAnimationによる値の補間方法には、2つの方法があります。setEasingCurve()を呼び出してイージングカーブを設定したり、setDuration()を呼び出して継続時間を設定したりできます。また、QVariantAnimationのサブクラスを作成し、仮想関数interpolated()を再実装することで、QVariantの補間方法を変更することも可能です。
QVariantをQtのプロパティとして宣言したくない場合は、QVariantAnimationをサブクラス化することも一つの選択肢となります。ただし、ほとんどの場合、QVariant をプロパティとして宣言したほうが適切であることに注意してください。
すべてのQVariant 型がサポートされているわけではありません。以下に、現在サポートされているQVariant 型のリストを示します:
カスタム型を含む他のバリアント型を補間する必要がある場合は、これらの補間を自分で実装する必要があります。これを行うには、特定の型に対して補間関数を登録します。この関数は、開始値、終了値、および現在の進行状況の3つのパラメータを受け取ります。
例:
QVariant myColorInterpolator(constQColor&start, constQColor&end,qreal progress)
{
// ...
returnQColor(/*...*/);
}
// ...
voidsomeFunc()
{
// ...
qRegisterAnimationInterpolator<QColor>(myColorInterpolator);
// ...
}もう一つの選択肢は、interpolated() を再実装することです。この関数は、補間対象の値に対する補間値を返します。
QPropertyAnimation 、QAbstractAnimation 、および「アニメーションフレームワーク」も参照してください 。
メンバ型のドキュメント
[alias] QVariantAnimation::KeyValue
これは、std::pair<qreal,QVariant> の typedef です。
QVariantAnimation::KeyValues
プロパティのドキュメント
[read-only] currentValue : QVariant
このプロパティには、アニメーションの現在の値が格納されます。
このプロパティは、現在の値を表します。これは、進行状況の計算に現在の時刻を用いて、start value とend value の間の補間値です。値自体はinterpolated()から取得され、この関数はアニメーションの実行中に繰り返し呼び出されます。
QVariantAnimation updateCurrentValue() 仮想関数は、現在の値が変更された際に呼び出されます。これは、更新を追跡する必要があるサブクラスにとって特に有用です。例えば、 は、QtQPropertyAnimation プロパティをアニメーション化するためにこの関数を使用しています。
アクセス関数:
| QVariant | currentValue() const |
Notifierシグナル:
| void | valueChanged(const QVariant &value) |
関連項目: startValue およびendValue 。
[bindable] duration : int
注:この プロパティは、QProperty のバインディングに対応しています。
このプロパティは、アニメーションの継続時間を保持します。
このプロパティは、アニメーションの継続時間をミリ秒単位で指定します。デフォルトの継続時間は250ミリ秒です。
アクセス関数:
| virtual int | duration() const override |
| void | setDuration(int msecs) |
関連項目: QAbstractAnimation::duration()。
[bindable] easingCurve : QEasingCurve
注:この プロパティは、QProperty バインディングに対応しています。
このプロパティは、アニメーションのイージングカーブを保持します
このプロパティは、アニメーションのイージングカーブを定義します。デフォルトでは線形イージングカーブが使用され、線形補間が行われます。その他のカーブも用意されており、例えばQEasingCurve::InCirc は円形の開始カーブを提供します。もう一つの例としてQEasingCurve::InOutElastic があり、これは補間されるバリアントの値に弾性効果を与えます。
QVariantAnimation QEasingCurve::valueForProgress() を使用すると、アニメーションの「正規化された進行度」( () / ()))が、アニメーションで実際に使用される有効な進行度に変換されます。 () が呼び出された際の進行度は、この有効な進行度となります。また、 内のステップも、この有効な進行度を基準としています。currentTime totalDuration interpolated keyValues
イージングカーブは、補間関数、interpolated() 仮想関数、およびアニメーションの継続時間と組み合わせて使用され、アニメーションの進行に伴い現在の値がどのように変化するかを制御します。
アクセス関数:
| QEasingCurve | easingCurve() const |
| void | setEasingCurve(const QEasingCurve &easing) |
endValue : QVariant
このプロパティには、アニメーションの終了値が格納されます
このプロパティは、アニメーションの終了時の値を記述します。
アクセス関数:
| QVariant | endValue() const |
| void | setEndValue(const QVariant &value) |
関連項目: ` startValue`。
startValue : QVariant
このプロパティは、アニメーションの開始値(オプション)を保持します
このプロパティは、アニメーションのオプションの開始値を指定します。省略された場合、または開始値として null の `QVariant ` が割り当てられた場合、アニメーションは開始時に終了位置の現在の位置を使用します。
アクセス関数:
| QVariant | startValue() const |
| void | setStartValue(const QVariant &value) |
「endValue」も参照してください 。
メンバ関数のドキュメント
QVariantAnimation::QVariantAnimation(QObject *parent = nullptr)
QVariantAnimation オブジェクトを作成します。parent は、QAbstractAnimation のコンストラクタに渡されます。
[virtual noexcept] QVariantAnimation::~QVariantAnimation()
アニメーションを破棄します。
[override virtual protected] bool QVariantAnimation::event(QEvent *event)
QAbstractAnimation::event(QEvent *event) を再実装します。
[virtual protected] QVariant QVariantAnimation::interpolated(const QVariant &from, const QVariant &to, qreal progress) const
この仮想関数は、変数from とto の間の線形補間結果を、progress における値として返します。通常、この値は0から1の間になります。QVariantAnimation のサブクラスでこの関数を再実装することで、独自の補間アルゴリズムを提供することができます。
なお、0 未満または 1 以上の値を返すQEasingCurve (QEasingCurve::InBack など)で補間が機能するためには、その が外挿(extrapolation)を行えることを確認する必要があります。データ型のセマンティクスが外挿を許可しない場合、この関数はその状況を適切に処理する必要があります。
Qtがすでにサポートしている型をクラスで処理したい場合は、この関数のQVariantAnimation 実装を呼び出す必要があります(サポートされている型のリストについては、QVariantAnimation クラスの説明を参照してください)。
QEasingCurveも参照してください 。
QVariant QVariantAnimation::keyValueAt(qreal step) const
指定されたstep のキーフレーム値を返します。指定されたstep は0から1の範囲でなければなりません。step に対してKeyValue が存在しない場合、無効なQVariant が返されます。
keyValues() およびsetKeyValueAt()も参照してください 。
QVariantAnimation::KeyValues QVariantAnimation::keyValues() const
このアニメーションのキーフレームを返します。
keyValueAt() およびsetKeyValues()も参照してください 。
void QVariantAnimation::setKeyValueAt(qreal step, const QVariant &value)
指定されたstep の位置に、指定されたvalue を持つキーフレームを作成します。指定されたstep は0から1の範囲でなければなりません。
setKeyValues() およびkeyValueAt()も参照してください 。
void QVariantAnimation::setKeyValues(const QVariantAnimation::KeyValues &keyValues)
現在のキーフレームのセットを、指定されたkeyValues に置き換えます。キーフレームの間隔は0から1の範囲でなければなりません。
keyValues() およびkeyValueAt()も参照してください 。
[override virtual protected] void QVariantAnimation::updateCurrentTime(int)
QAbstractAnimation::updateCurrentTime(int currentTime) を再実装します。
[virtual protected] void QVariantAnimation::updateCurrentValue(const QVariant &value)
この仮想関数は、アニメーションの現在の値が変更されるたびに呼び出されます。引数 `value ` は、新しい現在の値です。
基底クラスの実装では何も行われません。
「currentValue」も参照してください 。
[override virtual protected] void QVariantAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
QAbstractAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) を再実装します。
[signal] void QVariantAnimation::valueChanged(const QVariant &value)
QVariantAnimation value の値が変更されるたびに、このシグナルを発行します。
注: プロパティ `currentValue` に対する通知 シグナルです。
「 currentValue 」、「startValue 」、および「endValue 」も参照してください 。
関連する非メンバー
template <typename T> void qRegisterAnimationInterpolator(QVariant (*func)(const T &, const T &, qreal))
テンプレート型 `T` に対して、カスタム補間関数 `func ` を登録します。この補間関数は、アニメーションが構築される前に登録しておく必要があります。登録を解除して(デフォルトの補間関数を使用するには)、func を `nullptr` に設定してください。
警告: Qt の組み込み型(例:int )のいずれかにカスタム補間関数を登録すると 、その後この型で作成されるすべてのアニメーションに影響します。これは望ましくない動作となる可能性があります。そのため、必要なアニメーションの作成が完了したら、補間関数をデフォルト値にリセットすることをお勧めします。
注: この関数はスレッドセーフです。
© 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.