このページでは

QTimeLine Class

QTimeLine クラスは、アニメーションを制御するためのタイムラインを提供します。詳細...

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

パブリック型

enum Direction { Forward, Backward }
enum State { NotRunning, Paused, Running }

プロパティ

パブリック関数

QTimeLine(int duration = 1000, QObject *parent = nullptr)
virtual ~QTimeLine()
QBindable<int> bindableCurrentTime()
QBindable<QTimeLine::Direction> bindableDirection()
QBindable<int> bindableDuration()
QBindable<QEasingCurve> bindableEasingCurve()
QBindable<int> bindableLoopCount()
QBindable<int> bindableUpdateInterval()
int currentFrame() const
int currentTime() const
qreal currentValue() const
QTimeLine::Direction direction() const
int duration() const
QEasingCurve easingCurve() const
int endFrame() const
int frameForTime(int msec) const
int loopCount() const
void setDirection(QTimeLine::Direction direction)
void setDuration(int duration)
void setEasingCurve(const QEasingCurve &curve)
void setEndFrame(int frame)
void setFrameRange(int startFrame, int endFrame)
void setLoopCount(int count)
void setStartFrame(int frame)
void setUpdateInterval(int interval)
int startFrame() const
QTimeLine::State state() const
int updateInterval() const
virtual qreal valueForTime(int msec) const

パブリックスロット

void resume()
void setCurrentTime(int msec)
void setPaused(bool paused)
void start()
void stop()
void toggleDirection()

シグナル

void finished()
void frameChanged(int frame)
void stateChanged(QTimeLine::State newState)
void valueChanged(qreal value)

再実装された保護関数

virtual void timerEvent(QTimerEvent *event) override

詳細な説明

これは、スロットを定期的に呼び出すことで、GUI コントロールをアニメーションさせるために最もよく使用されます。 QTimeLine のコンストラクタに、その継続時間をミリ秒単位で渡すことで、タイムラインを構築できます。タイムラインの継続時間は、アニメーションが実行される時間を表します。次に、setFrameRange() を呼び出して、適切なフレーム範囲を設定します。最後に、frameChanged() シグナルを、アニメーション化したいウィジェットの適切なスロット(たとえば、QProgressBar のsetValue())に接続します。start()を呼び出すと、QTimeLineはRunning状態に入り、一定間隔でframeChanged()をエミットし始めます。これにより、ウィジェットに接続されたプロパティの値が、フレーム範囲の下限から上限へと、一定の速度で増加していきます。 更新間隔は、setUpdateInterval()を呼び出すことで指定できます。処理が完了すると、QTimeLineはNotRunning 状態に入り、finished()をエミットします。

例:

//...
auto progressBar = new QProgressBar(this);
progressBar->setRange(0, 100);

// Construct a 1-second timeline with a frame range of 0 - 100
QTimeLine *timeLine = new QTimeLine(1000, this);
timeLine->setFrameRange(0, 100);
connect(timeLine, &QTimeLine::frameChanged, progressBar, &QProgressBar::setValue);

// Clicking the push button will start the progress bar animation
auto pushButton = new QPushButton(tr("Start animation"), this);
connect(pushButton, &QPushButton::clicked, timeLine, &QTimeLine::start);
//...

デフォルトでは、タイムラインは最初から最後まで一度だけ実行されます。その後、最初から再実行するには、start()を再度呼び出す必要があります。タイムラインをループさせるには、setLoopCount()を呼び出し、終了するまでに実行すべき回数を引数として指定します。また、setDirection()を呼び出すことで、進行方向を変更し、タイムラインを逆方向に実行させることもできます。 また、setPaused() を呼び出すことで、タイムラインの実行中に一時停止や再開を行うこともできます。インタラクティブな制御には、setCurrentTime() 関数が用意されており、これによりタイムラインの時間位置を直接設定できます。この関数は、NotRunning 状態(例:QSlider 内のvalueChanged()シグナルに接続されている場合)で最も有用ですが、いつでも呼び出すことができます。

フレームインターフェースは標準のウィジェットで有用ですが、QTimeLine を使用すれば、あらゆる種類のアニメーションを制御することができます。 QTimeLineの中核となるのはvalueForTime()関数であり、これは指定された時間に対して0から1の間の値を生成します。この値は通常、アニメーションのステップを表すために使用され、0はアニメーションの最初のステップ、1は最後のステップを表します。 実行時、QTimeLineはvalueForTime()を呼び出し、valueChanged()を発行することで、0から1までの値を生成します。デフォルトでは、valueForTime()は補間アルゴリズムを適用してこれらの値を生成します。setEasingCurve()を呼び出すことで、あらかじめ定義された一連のタイムラインアルゴリズムから選択することができます。

なお、デフォルトでは、QTimeLineはQEasingCurve::InOutSine を使用しており、このアルゴリズムでは、値が最初はゆっくりと増加し、その後一定に増加し、最後に再びゆっくりと増加する値が生成されます。カスタムタイムラインを作成する場合は、valueForTime()を再実装することができます。その場合、QTimeLineのeasingCurve プロパティは無視されます。

QProgressBar およびQProgressDialogも参照してください 。

メンバ型のドキュメント

enum QTimeLine::Direction

この列挙型は、Running 状態におけるタイムラインの方向を表します。

定数値説明
QTimeLine::Forward0タイムラインの現在の時刻は、時間の経過とともに増加します(つまり、0 から終わり/再生時間の方向へと移動します)。
QTimeLine::Backward1タイムラインの現在の時刻は、時間の経過とともに減少します(つまり、終了点/再生時間から 0 に向かって移動します)。

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

enum QTimeLine::State

この列挙型は、タイムラインの状態を表します。

定数値説明
QTimeLine::NotRunning0タイムラインは実行されていません。これは `QTimeLine` の初期状態であり、処理が完了すると `QTimeLine ` 状態に戻ります。setCurrentTime() が呼び出されるか、start() を呼び出してタイムラインが開始されるまで、現在時刻、フレーム、および値は変更されません。
QTimeLine::Paused1タイムラインは一時停止(つまり、一時的に中断)されています。setPaused(false) を呼び出すと、タイムラインの処理が再開されます。
QTimeLine::Running2タイムラインは実行中です。制御がイベントループ内にある間、QTimeLine は一定間隔で現在の時刻を更新し、必要に応じてvalueChanged()およびframeChanged()を発行します。

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

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

[bindable] currentTime : int

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

このプロパティは、タイムラインの現在の時刻を保持します。

QTimeLine が「実行中」の状態にある場合、この値はタイムラインの継続時間と進行方向に応じて継続的に更新されます。それ以外の場合は、stop()が最後に呼び出された時点での値、またはsetCurrentTime()によって設定された値となります。

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

デフォルトでは、このプロパティの値は 0 です。

アクセス関数:

int currentTime() const
void setCurrentTime(int msec)

[bindable] direction : Direction

注:この プロパティは、QProperty のバインディングをサポートしています。

このプロパティは、QTimeLine がRunning 状態にある際のタイムラインの方向を保持します。

この方向は、start() が呼び出された後、時間が 0 からタイムラインの継続時間に向かって進むか、あるいは継続時間の値から 0 に向かって進むかを示します。

direction へのバインディングは、setDirection() だけでなく、toggleDirection() によっても削除されます。

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

アクセス関数:

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

[bindable] duration : int

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

このプロパティには、タイムラインの合計継続時間がミリ秒単位で格納されます。

デフォルトでは、この値は 1000(つまり 1 秒)ですが、QTimeLine のコンストラクタに継続時間を渡すか、setDuration() を呼び出すことで変更できます。継続時間は 0 より大きくなければなりません。

注:持続時間を変更しても 、現在の時刻がゼロや新しい持続時間にリセットされることはありません。希望する値を指定してsetCurrentTime() を呼び出す必要があります。

アクセス関数:

int duration() const
void setDuration(int duration)

[bindable] easingCurve : QEasingCurve

注:この プロパティは、QProperty のバインディングをサポートしています。

タイムラインで使用するイージングカーブを指定します。valueForTime() が再実装されている場合、この値は無視されます。

アクセス関数:

QEasingCurve easingCurve() const
void setEasingCurve(const QEasingCurve &curve)

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

[bindable] loopCount : int

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

このプロパティは、タイムラインが終了する前にループする回数を保持します。

ループ回数が 0 の場合、タイムラインは無限にループします。

デフォルトでは、このプロパティの値は 1 です。

アクセス関数:

int loopCount() const
void setLoopCount(int count)

[bindable] updateInterval : int

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

このプロパティは、QTimeLine が現在の時刻を更新するたびに、その更新間隔(ミリ秒単位)を保持します。

現在時刻を更新する際、QTimeLine は、現在の値が変更された場合はvalueChanged()を、フレームが変更された場合はframeChanged()を発行します。

デフォルトでは、間隔は 40 ミリ秒で、これは 1 秒あたり 25 回の更新に相当します。

アクセス関数:

int updateInterval() const
void setUpdateInterval(int interval)

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

[explicit] QTimeLine::QTimeLine(int duration = 1000, QObject *parent = nullptr)

duration ミリ秒の持続時間を持つタイムラインを作成します。parent は、QObject のコンストラクタに渡されます。デフォルトの持続時間は1000ミリ秒です。

[virtual noexcept] QTimeLine::~QTimeLine()

タイムラインを破壊する。

int QTimeLine::currentFrame() const

現在の時刻に対応するフレームを返します。

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

qreal QTimeLine::currentValue() const

現在の時刻に対応する値を返します。

valueForTime() およびcurrentFrame()も参照してください 。

int QTimeLine::endFrame() const

タイムラインの終了位置に対応するフレーム(つまり、現在の値が 1 であるフレーム)を返します。

setEndFrame() およびsetFrameRange()も参照してください 。

[private signal] void QTimeLine::finished()

このシグナルは、QTimeLine が終了したとき(つまり、タイムラインの末尾に達したとき)に発信され、ループすることはありません。

注:これは プライベートシグナルです。シグナル接続で使用することはできますが、ユーザーが発信することはできません。

[private signal] void QTimeLine::frameChanged(int frame)

QTimeLine Running 状態のときは、現在のフレームが変更された場合に限り、このシグナルを一定間隔で発信します。 は現在のフレーム番号です。frame

注:これは プライベートシグナルです。シグナル接続で使用することはできますが、ユーザーが発行することはできません。

関連項目: QTimeLine::setFrameRange() およびQTimeLine::updateInterval 。

int QTimeLine::frameForTime(int msec) const

msec の時刻に対応するフレームを返します。この値は、valueForTime() が返す値に基づいて、開始フレームと終了フレームの線形補間によって計算されます。

valueForTime() およびsetFrameRange()も参照してください 。

[slot] void QTimeLine::resume()

現在の時刻からタイムラインを再開します。QTimeLine は「Running」状態に戻り、イベントループに入ると、一定間隔で現在の時刻、フレーム、および値を更新します。

start() とは対照的に、この関数は再開する前にタイムラインを再起動しません。

start()、updateInterval()、frameChanged()、およびvalueChanged()も参照してください 。

void QTimeLine::setEndFrame(int frame)

タイムラインの終了位置に対応するフレーム(つまり、現在の値が 1 となるフレーム)である終了フレームを、frame に設定します。

endFrame()、startFrame()、およびsetFrameRange()も参照してください 。

void QTimeLine::setFrameRange(int startFrame, int endFrame)

タイムラインのフレームカウンタを、開始点をstartFrame 、終了点をendFrame に設定します。各時間値について、currentFrame()またはframeForTime()を呼び出すと、QTimeLine はvalueForTime()の戻り値を用いて補間を行い、対応するフレームを特定します。

「Running」状態にあるとき、QTimeLine はフレームが変更されると、frameChanged()シグナルも発信します。

startFrame()、endFrame()、start()、およびcurrentFrame()も参照してください 。

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

paused がtrueの場合、タイムラインは一時停止され、QTimeLine は「Paused」状態になります。start()またはsetPaused(false)が呼び出されるまで、更新のシグナルは送信されません。paused がfalseの場合、タイムラインは再開され、中断した箇所から続行されます。

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

void QTimeLine::setStartFrame(int frame)

タイムラインの開始時点に対応する開始フレーム(つまり、現在の値が 0 となるフレーム)を、frame に設定します。

startFrame()、endFrame()、およびsetFrameRange()も参照してください 。

[slot] void QTimeLine::start()

タイムラインを開始します。QTimeLine は「Running」状態になり、イベントループに入ると、一定間隔で現在の時刻、フレーム、および値を更新します。デフォルトの間隔は40ミリ秒(つまり、1秒あたり25回)です。setUpdateInterval()を呼び出すことで、更新間隔を変更できます。

タイムラインは位置 0 から開始されます。逆方向の場合は、末尾から開始されます。停止したタイムラインを再起動せずに再開したい場合は、代わりにresume() を呼び出してください。

関連項目: resume()、updateInterval()、frameChanged()、およびvalueChanged()。

int QTimeLine::startFrame() const

タイムラインの開始位置に対応する開始フレーム(つまり、現在の値が 0 であるフレーム)を返します。

setStartFrame() およびsetFrameRange()も参照してください 。

QTimeLine::State QTimeLine::state() const

タイムラインの状態を返します。

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

[private signal] void QTimeLine::stateChanged(QTimeLine::State newState)

このシグナルは、QTimeLine の状態が変化するたびに発信されます。新しい状態はnewState です。

注:これは プライベートシグナルです。シグナル接続では使用できますが、ユーザーが発行することはできません。

[slot] void QTimeLine::stop()

タイムラインを停止し、QTimeLine をNotRunning 状態に移行させます。

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

[override virtual protected] void QTimeLine::timerEvent(QTimerEvent *event)

QObject::timerEvent(QTimerEvent *event) を再実装します。

[slot] void QTimeLine::toggleDirection()

タイムラインの方向を切り替えます。「前方」だった場合は「後方」になり、その逆も同様です。

direction の既存のバインディングは削除されます。

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

[private signal] void QTimeLine::valueChanged(qreal value)

QTimeLine Running 状態のときは、現在の値が変化した場合に限り、このシグナルを一定間隔で発信します。 は現在の値です。 は0.0から1.0までの数値ですvalue value

注:これは プライベートシグナルです。シグナル接続で使用することはできますが、ユーザーが発行することはできません。

関連項目: ` QTimeLine::setDuration()`、`QTimeLine::valueForTime()`、および `QTimeLine::updateInterval`。

[virtual] qreal QTimeLine::valueForTime(int msec) const

時刻 `msec` に対応するタイムラインの値を返します。返される値は曲線の形状によって異なりますが、常に 0 から 1 の範囲になります。msec が 0 の場合、デフォルトの実装では常に 0 が返されます。

タイムラインに独自の曲線形状を適用するには、この関数を再実装してください。

easingCurve およびframeForTime()も参照してください 。

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