QAbstractAnimation Class
QAbstractAnimationクラスは、すべてのアニメーションの基本です。詳細...
Header: | #include <QAbstractAnimation> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Inherits: | QObject |
Inherited By: |
- 継承メンバを含む全メンバ一覧
- QAbstractAnimationはAnimation Frameworkの一部です。
パブリックタイプ
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) |
保護された関数
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() で直接設定することもできます。
アニメーションは、どの時点でも3つの状態のうちの1つになります:Running Stopped Paused State enum で定義されています。現在の状態は、 ()、 ()、 ()、 () を呼び出すことで変更できます。アニメーションが開始されると、 は常にリセットされます。一時停止されたアニメーションは、再開されたときに同じ現在時刻で続行されます。アニメーションが停止した場合、再開することはできませんが、(再び開始されるまで)現在時刻を保持します。QAbstractAnimationは、状態が変化するたびに ()を発行します。start stop pause resume current time stateChanged
アニメーションは、loopCount プロパティを設定することで、何回でもループさせることができます。アニメーションの現在時刻がduration() に達すると、現在時刻をリセットして実行し続けます。ループ回数1(デフォルト値)は、アニメーションが1回実行されることを意味します。継続時間 -1 は、アニメーションが停止するまで実行されることを意味します。現在時刻がduration() と等しく、アニメーションが最終ループに入ると、Stopped 状態になり、finished() シグナルが出力されます。
QAbstractAnimation は、サブクラスがアニメーションの進行状況を追跡するために使用する純粋な仮想関数、duration() とupdateCurrentTime() を提供します。duration() 関数を使用すると、アニメーションの継続時間を報告できます(前述のとおり)。アニメーションフレームワークは、現在時刻が変更されたときにupdateCurrentTime() を呼び出します。この関数を再実装することで、アニメーションの進行状況を追跡することができます。この関数の呼び出し間隔も呼び出し回数も定義されていないことに注意してください。
updateState() を再実装することで、アニメーションの状態変化を追跡することができる。これは、時間によって駆動されないアニメーションに特に有用である。
QVariantAnimation,QPropertyAnimation,QAnimationGroup,The Animation Frameworkも参照のこと 。
メンバ型のドキュメント
enum QAbstractAnimation::DeletionPolicy
定数 | 値 | 説明 |
---|---|---|
QAbstractAnimation::KeepWhenStopped | 0 | アニメーションは停止しても削除されない。 |
QAbstractAnimation::DeleteWhenStopped | 1 | アニメーションは、停止時に自動的に削除されます。 |
enum QAbstractAnimation::Direction
この列挙型は、Running 状態の時のアニメーションの方向を記述します。
定数 | 値 | 説明 |
---|---|---|
QAbstractAnimation::Forward | 0 | アニメーションの現在の時間は、時間と共に増加します (すなわち、0 から終了 / 継続時間に向かって移動します)。 |
QAbstractAnimation::Backward | 1 | アニメーションの現在の時間は、時間と共に減少する(すなわち、終了/持続時間から0に向かって移動する)。 |
directionも参照してください 。
enum QAbstractAnimation::State
この列挙型は、アニメーションの状態を記述します。
定数 | 値 | 説明 |
---|---|---|
QAbstractAnimation::Stopped | 0 | アニメーションは実行されていません。これはQAbstractAnimation の初期状態であり、終了時にQAbstractAnimation が再び入る状態である。setCurrentTime() が呼び出されるか、start() が呼び出されてアニメーションが開始されるまで、現在時刻は変更されません。 |
QAbstractAnimation::Paused | 1 | アニメーションは一時停止される(つまり、一時的に中断される)。resume() を呼び出すと、アニメーションが再開されます。 |
QAbstractAnimation::Running | 2 | アニメーションは実行中です。制御がイベントループにある間、QAbstractAnimation は一定間隔で現在時刻を更新し、適切なときにupdateCurrentTime() を呼び出します。 |
state() およびstateChanged()も参照してください 。
プロパティの説明
[bindable read-only]
currentLoop : int
注意: このプロパティは、QProperty バインディングをサポートしている。
このプロパティは、アニメーションの現在のループを保持します。
このプロパティは、アニメーションの現在のループを記述します。デフォルトでは、アニメーションのループカウントは1であるため、現在のループは常に0である。ループカウントが2であり、アニメーションがその持続時間を超えて実行された場合、アニメーションは自動的に巻き戻され、現在の時間0、現在のループ1、で再スタートする。
現在のループが変更されると、QAbstractAnimation はcurrentLoopChanged() シグナルを発します。
[bindable]
currentTime : int
注: このプロパティは、QProperty バインディングをサポートしています。
このプロパティは、アニメーションの現在時刻と進行状況を保持します。
このプロパティは、アニメーションの現在時刻を記述します。setCurrentTime を呼び出して現在時刻を変更することも、start() を呼び出してアニメーションを実行させ、アニメーションの進行に合わせて現在時刻を自動的に設定することもできます。
アニメーションの現在時刻は0から始まり、totalDuration ()で終わります。
注: 他のプロパティをcurrentTimeにバインドすることはできますが、バインディングを設定することはお勧めしません。アニメーションが進行すると、currentTimeは自動的に更新され、バインディングはキャンセルされます。
loopCount およびcurrentLoopTime()も参照してください 。
[bindable]
direction : Direction
注: このプロパティは、QProperty バインディングをサポートしています。
このプロパティは、Running 状態のときのアニメーションの方向を保持します。
この方向は、時間が 0 からアニメーションの継続時間に向かって移動するか、start() が呼び出された後、継続時間の値から 0 に向かって移動するかを示します。
デフォルトでは、このプロパティはForward に設定されています。
[read-only]
duration : const int
このプロパティは、アニメーションの持続時間を保持します。
duration が -1 の場合は、 duration が未定義であることを意味します。この場合、loopCount は無視されます。
アクセス関数:
virtual int | duration() const = 0 |
[bindable]
loopCount : int
注: このプロパティは、QProperty バインディングをサポートしています。
このプロパティは、アニメーションのループカウントを保持します。
このプロパティは、アニメーションのループカウントを整数で記述します。デフォルトでは、この値は 1 で、アニメーションは一度だけ実行され、その後停止します。この値を変更することで、アニメーションを数回ループさせることができます。0を指定するとアニメーションは全く実行されず、-1を指定するとアニメーションは停止するまで永遠にループします。継続時間が未定義のアニメーションをループさせることはサポートされていません。アニメーションは一度だけ実行されます。
[bindable read-only]
state : State
注意: このプロパティはQProperty バインディングをサポートしています。
アニメーションの状態。
このプロパティは、アニメーションの現在の状態を記述します。アニメーションの状態が変化すると、QAbstractAnimation stateChanged () シグナルを発信します。
注意: 状態が更新されると、currentTime プロパティが更新され、バインディングがキャンセルされることがあります。そのため、アニメーションの状態が変化すると予想されるときに、currentTime プロパティにバインディングを設定するときは注意してください。
メンバ関数の説明
QAbstractAnimation::QAbstractAnimation(QObject *parent = nullptr)
QAbstractAnimation ベースクラスを構築し、QObject のコンストラクタにparent を渡します。
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 を返します。resume() またはstart() が呼び出されるまで、currentTime の値は変更されません。現在の時刻から続行したい場合は、resume() を呼び出します。
start()、state()、およびresume()も参照して ください。
[slot]
void QAbstractAnimation::resume()
一時停止したアニメーションを再開します。アニメーションが再開されると、resumed() およびstateChanged() シグナルが出力されます。currenttime は変更されません。
[slot]
void QAbstractAnimation::setPaused(bool paused)
paused が true の場合、アニメーションは一時停止します。paused が偽の場合、アニメーションは再開されます。
state()、pause()、およびresume() も参照して ください。
[slot]
void QAbstractAnimation::start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped)
アニメーションを開始する。policy 引数は、アニメーションが終了したときに削除するかどうかを指定します。アニメーションが始まると、stateChanged() シグナルが発せられ、state() は Running を返す。制御がイベントループに達すると、アニメーションはそれ自体で実行され、アニメーションの進行に合わせて定期的にupdateCurrentTime() が呼び出されます。
アニメーションが現在停止しているか、すでに終了している場合、start() を呼び出すと、アニメーションが巻き戻され、最初からやり直されます。アニメーションが終端に達すると、アニメーションは停止するか、ループ・レベルが 1 より大きい場合は、巻き戻して最初から続行します。
アニメーションがすでに実行されている場合、この関数は何もしません。
[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() シグナルが発せられる。
int QAbstractAnimation::totalDuration() const
ループ回数を含む、アニメーションの総実効時間を返します。
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 から呼び出されます。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。