このページでは

QAbstractAnimation Class

QAbstractAnimation クラスは、すべてのアニメーションの基底クラスです。詳細...

ヘッダー: #include <QAbstractAnimation>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
継承元: QObject
継承元:

QAnimationGroup、QPauseAnimation 、およびQVariantAnimation

パブリック型

enum DeletionPolicy { KeepWhenStopped, DeleteWhenStopped }
enum Direction { Forward, Backward }
enum State { Stopped, Paused, Running }

プロパティ

パブリック関数

QAbstractAnimation(QObject *parent = nullptr)
virtual ~QAbstractAnimation()
QBindable<int> bindableCurrentLoop() const
QBindable<int> bindableCurrentTime()
QBindable<QAbstractAnimation::Direction> bindableDirection()
QBindable<int> bindableLoopCount()
QBindable<QAbstractAnimation::State> bindableState() const
int currentLoop() const
int currentLoopTime() const
int currentTime() const
QAbstractAnimation::Direction direction() const
virtual int duration() const = 0
QAnimationGroup *group() const
int loopCount() const
void setDirection(QAbstractAnimation::Direction direction)
void setLoopCount(int loopCount)
QAbstractAnimation::State state() const
int totalDuration() const

パブリックスロット

void pause()
void resume()
void setCurrentTime(int msecs)
void setPaused(bool paused)
void start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped)
void stop()

シグナル

void currentLoopChanged(int currentLoop)
void directionChanged(QAbstractAnimation::Direction newDirection)
void finished()
void stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

protected 関数

virtual void updateCurrentTime(int currentTime) = 0
virtual void updateDirection(QAbstractAnimation::Direction direction)
virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

再実装された保護関数

virtual bool event(QEvent *event) override

詳細な説明

このクラスは、すべてのアニメーションに共通する機能のための関数を定義しています。このクラスを継承することで、アニメーションフレームワークの他の部分と連携するカスタムアニメーションを作成できます。

アニメーションの進行状況は、現在の時間(currentLoopTime())によって表されます。これは、アニメーションの開始時点(0)から終了時点(duration())までの時間をミリ秒単位で測定したものです。この値は、アニメーションの実行中に自動的に更新されます。また、setCurrentTime() を使用して直接設定することも可能です。

アニメーションは常に、Running 、Stopped 、またはPausedの3つの状態のいずれかにあります。これらはState 列挙型で定義されています。現在の状態は、start()、stop()、pause()、またはresume()を呼び出すことで変更できます。 アニメーションは、開始されると常にcurrent time をリセットします。一時停止された場合、再開時には同じ現在の時刻から続行されます。アニメーションが停止されると、再開することはできませんが、現在の時刻は保持されます(再度開始されるまで)。QAbstractAnimationは、状態が変更されるたびにstateChanged()を発行します。

アニメーションは、loopCount プロパティを設定することで、任意の回数ループさせることができます。アニメーションの現在時刻がduration()に達すると、現在時刻がリセットされ、実行が継続されます。ループ回数が1(デフォルト値)の場合、アニメーションは1回実行されます。 なお、継続時間が -1 の場合、アニメーションは停止されるまで実行され、現在の時間は無限に増加し続けます。現在の時間がduration() に等しくなり、かつアニメーションが最後のループにある場合、Stopped 状態に入り、finished() シグナルが発信されます。

QAbstractAnimation は、サブクラスがアニメーションの進行状況を追跡するために使用する純粋仮想関数、duration() およびupdateCurrentTime() を提供します。duration() 関数を使用すると、アニメーションの持続時間を報告できます(前述の通り)。アニメーションフレームワークは、現在時刻が変更された際にupdateCurrentTime() を呼び出します。この関数を再実装することで、アニメーションの進行状況を追跡できます。 なお、この関数の呼び出し間隔や呼び出し回数は定義されていませんが、通常は 1 秒あたり 60 回の更新となります。

updateState() を再実装することで、アニメーションの状態変化を追跡できます。これは、時間によって駆動されないアニメーションにおいて特に有用です。

QVariantAnimation 、QPropertyAnimation 、QAnimationGroup 、および「アニメーションフレームワーク」も参照してください 。

メンバ型のドキュメント

enum QAbstractAnimation::DeletionPolicy

定数値説明
QAbstractAnimation::KeepWhenStopped0アニメーションは停止しても削除されません。
QAbstractAnimation::DeleteWhenStopped1停止すると、アニメーションは自動的に削除されます。

enum QAbstractAnimation::Direction

この列挙型は、Running 状態におけるアニメーションの方向を表します。

定数値説明
QAbstractAnimation::Forward0アニメーションの現在の時間が経過とともに増加します(つまり、0 から終了時点/再生時間に向かって進行します)。
QAbstractAnimation::Backward1アニメーションの現在の時間が時間の経過とともに増加します(つまり、終了時点/再生時間から 0 に向かって移動します)。

「direction」も参照してください 。

enum QAbstractAnimation::State

この列挙型は、アニメーションの状態を表します。

定数値説明
QAbstractAnimation::Stopped0アニメーションは実行されていません。これは `QAbstractAnimation` の初期状態であり、終了すると `QAbstractAnimation ` 状態に戻ります。setCurrentTime() が呼び出されるか、start() を呼び出してアニメーションが開始されるまで、現在の時間は変更されません。
QAbstractAnimation::Paused1アニメーションは一時停止(つまり、一時的に中断)されています。resume() を呼び出すと、アニメーションが再開されます。
QAbstractAnimation::Running2アニメーションが実行中です。制御がイベントループ内にある間、QAbstractAnimation は一定間隔で現在の時刻を更新し、適切なタイミングでupdateCurrentTime()を呼び出します。

state() およびstateChanged()も参照してください 。

プロパティのドキュメント

[bindable read-only] currentLoop : int

注:この プロパティは、QProperty バインディングに対応しています。

このプロパティは、アニメーションの現在のループ番号を保持します

このプロパティは、アニメーションの現在のループ数を表します。デフォルトでは、アニメーションのループ回数は 1 であるため、現在のループ数は常に 0 になります。ループ回数が 2 で、アニメーションが所定の再生時間を過ぎた場合、自動的に巻き戻され、現在の時刻 0、現在のループ数 1 の状態から再開始されます。

現在のループ数が変更されると、QAbstractAnimation はcurrentLoopChanged()シグナルを発行します。

アクセス関数:

int currentLoop() const

通知シグナル:

void currentLoopChanged(int currentLoop)

[bindable] currentTime : int

注:この プロパティは、QProperty バインディングに対応しています。

このプロパティは、アニメーションの現在の時刻と進行状況を保持します

このプロパティは、アニメーションの現在の時刻を表します。setCurrentTime() を呼び出すことで現在の時刻を変更することも、start() を呼び出してアニメーションを実行させ、アニメーションの進行に合わせて現在の時刻を自動的に設定させることもできます。

アニメーションの現在時刻は 0 から始まり、totalDuration() で終了します。

注: currentTime に他のプロパティをバインドすることは可能ですが 、バインドを設定することは推奨されません。アニメーションが進むにつれて currentTime は自動的に更新されるため、バインドが解除されてしまうからです。

関連関数:

int currentTime() const
void setCurrentTime(int msecs)

関連項目: loopCount およびcurrentLoopTime()。

[bindable] direction : Direction

注:この プロパティは、QProperty バインディングに対応しています。

このプロパティは、アニメーションがRunning 状態にある際の進行方向を保持します。

この方向は、時間が 0 からアニメーションの継続時間に向かって進むか、start() が呼び出された後、継続時間の値から 0 に向かって進むかを示します。

デフォルトでは、このプロパティは `Forward` に設定されています。

アクセス関数:

QAbstractAnimation::Direction direction() const
void setDirection(QAbstractAnimation::Direction direction)

Notifierシグナル:

void directionChanged(QAbstractAnimation::Direction newDirection)

[read-only] duration : int

このプロパティは、アニメーションの継続時間を保持します。

持続時間が -1 の場合、持続時間は未定義となります。この場合、loopCount は無視されます。

アクセス関数:

virtual int duration() const = 0

[bindable] loopCount : int

注:この プロパティは、QProperty バインディングに対応しています。

このプロパティは、アニメーションのループ回数を保持します。

このプロパティは、アニメーションのループ回数を整数で指定します。デフォルト値は 1 で、これはアニメーションが 1 回だけ実行された後に停止することを意味します。 この値を変更することで、アニメーションを複数回ループさせることができます。値を 0 にするとアニメーションはまったく実行されず、-1 にすると停止されるまで無限にループします。継続時間が未定義のアニメーションではループはサポートされていません。その場合は 1 回のみ実行されます。

アクセス関数:

int loopCount() const
void setLoopCount(int loopCount)

[bindable read-only] state : State

注:この プロパティは、QProperty バインディングに対応しています。

アニメーションの状態。

このプロパティは、アニメーションの現在の状態を表します。アニメーションの状態が変化すると、QAbstractAnimation はstateChanged()シグナルを発行します。

注:状態の 更新により、currentTime プロパティが更新される場合があり、その結果、そのバインディングが解除される可能性があります。したがって、アニメーションの状態が変化することが予想される場合は、currentTime プロパティへのバインディングを設定する際に注意してください。

アクセス関数:

QAbstractAnimation::State state() const

Notifierシグナル:

void stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

メンバ関数のドキュメント

QAbstractAnimation::QAbstractAnimation(QObject *parent = nullptr)

QAbstractAnimation 基底クラスを生成し、parent をQObject のコンストラクタに渡します。

QVariantAnimation およびQAnimationGroupも参照してください 。

[virtual noexcept] QAbstractAnimation::~QAbstractAnimation()

実行中のアニメーションを停止し、その後QAbstractAnimation を破棄します。アニメーションがQAnimationGroup の一部である場合、破棄される前に自動的に削除されます。

[signal] void QAbstractAnimation::currentLoopChanged(int currentLoop)

QAbstractAnimation 電流ループが変化するたびに、このシグナルを発信します。currentLoop は電流ループです。

注: プロパティ `currentLoop`の通知 シグナルです。

currentLoop() およびloopCount()も参照してください 。

int QAbstractAnimation::currentLoopTime() const

現在のループ内の現在の時刻を返します。0 から `duration()` までの値をとります。

duration() およびcurrentTimeも参照してください 。

[signal] void QAbstractAnimation::directionChanged(QAbstractAnimation::Direction newDirection)

QAbstractAnimation 方向が変更されるたびに、このシグナルを発信します。newDirection は新しい方向です。

注: プロパティ `direction` に対する通知 シグナルです。

「direction」も参照してください 。

[pure virtual] int QAbstractAnimation::duration() const

この純粋仮想関数は、アニメーションの継続時間を返し、QAbstractAnimation が現在の時刻を更新し続ける期間を定義します。この継続時間はローカルなものであり、ループ回数は含まれません。

戻り値が -1 の場合は、アニメーションの継続時間が定義されていないことを示し、アニメーションは停止されるまで永久に実行され続けます。これは、時間駆動型ではないアニメーションや、その継続時間を容易に予測できない場合(例:ゲーム内のイベント駆動型オーディオ再生)に有用です。

アニメーションが並列型の `QAnimationGroup` である場合、継続時間はそのアニメーションを構成するすべてのアニメーションの中で最も長いものとなります。アニメーションが順次型の `QAnimationGroup` である場合、継続時間はそのアニメーションを構成するすべてのアニメーションの継続時間の合計となります。

注: プロパティ durationのゲッター 関数。

loopCountも参照してください 。

[override virtual protected] bool QAbstractAnimation::event(QEvent *event)

QObject::event(QEvent *e) を再実装します。

[signal] void QAbstractAnimation::finished()

QAbstractAnimation アニメーションが停止し、終了した後にこのシグナルを発行します。

このシグナルは、stateChanged() の実行後に発火します。

stateChanged()も参照してください 。

QAnimationGroup *QAbstractAnimation::group() const

このアニメーションがQAnimationGroup の一部である場合、この関数はそのグループへのポインタを返します。そうでない場合は、nullptr を返します。

QAnimationGroup::addAnimation()も参照してください 。

[slot] void QAbstractAnimation::pause()

アニメーションを一時停止します。アニメーションが一時停止されている場合、state() は「Paused」を返します。currentTime の値は、resume() またはstart() が呼び出されるまで変更されません。現在の時点から再生を再開したい場合は、resume() を呼び出してください。

start()、state()、およびresume()も参照してください 。

[slot] void QAbstractAnimation::resume()

一時停止されていたアニメーションを再開します。アニメーションが再開されると、stateChanged() シグナルが発信されます。currentTime プロパティは変更されません。

start()、pause()、およびstate()も参照してください 。

[slot] void QAbstractAnimation::setPaused(bool paused)

paused がtrueの場合、アニメーションは一時停止されます。paused がfalseの場合、アニメーションは再開されます。

state()、pause()、およびresume()も参照してください 。

[slot] void QAbstractAnimation::start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped)

アニメーションを開始します。policy 引数は、アニメーション終了時にそれを削除するかどうかを指定します。アニメーションが開始されると、stateChanged()シグナルが発火し、state()はRunningを返します。制御がイベントループに到達すると、アニメーションは自動的に実行され、進行に合わせて定期的にupdateCurrentTime()が呼び出されます。

アニメーションが現在停止中であるか、すでに終了している場合、start() を呼び出すとアニメーションが巻き戻され、最初から再開始されます。アニメーションが終了点に達すると、アニメーションは停止するか、ループレベルが 1 より大きい場合は巻き戻されて最初から続行されます。

アニメーションがすでに実行中の場合、この関数は何もしません。

stop() およびstate()も参照してください 。

[signal] void QAbstractAnimation::stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

QAbstractAnimation アニメーションの状態が「oldState 」から「newState 」に変化するたびに、このシグナルを発します。このシグナルは、仮想関数updateState()が呼び出された後に発せられます。

注: プロパティ `state` に対する通知 シグナルです。

関連項目: updateState()。

[slot] void QAbstractAnimation::stop()

アニメーションを停止します。アニメーションが停止すると、stateChanged() シグナルが発信され、state() の戻り値は Stopped になります。現在の時刻は変更されません。

アニメーションが終了点に到達した後、自動的に停止する場合(すなわち、currentLoopTime() ==duration() かつcurrentLoop() >loopCount() - 1 の場合)、finished() シグナルが発信されます。

start() およびstate()も参照してください 。

int QAbstractAnimation::totalDuration() const

ループ回数を含めた、アニメーションの合計再生時間と実再生時間を返します。

注: ループ回数が非常に多い場合や 、1回のループの継続時間が長すぎる場合 、合計継続時間がint に収まらないことがあります。その場合は、値がINT_MAX にクリップされます。

関連項目: duration() およびcurrentTime 。

[pure virtual protected] void QAbstractAnimation::updateCurrentTime(int currentTime)

この純粋仮想関数は、アニメーションのcurrentTime が変更されるたびに呼び出されます。

updateState()も参照してください 。

[virtual protected] void QAbstractAnimation::updateDirection(QAbstractAnimation::Direction direction)

この仮想関数は、アニメーションの方向が変更された際に、QAbstractAnimation によって呼び出されます。引数direction は新しい方向を表します。

setDirection() およびdirection()も参照してください 。

[virtual protected] void QAbstractAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

この仮想関数は、アニメーションの状態が `oldState ` から `newState` に変更されたときに、QAbstractAnimation によって呼び出されます。

start()、stop()、pause()、およびresume()も参照してください 。

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