QTimeLine Class
QTimeLineクラスは、アニメーションを制御するためのタイムラインを提供します。もっと詳しく...
ヘッダー | #include <QTimeLine> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
継承: | QObject |
- 継承メンバを含む全メンバのリスト
- QTimeLineはAnimation Frameworkに含まれます。
パブリックタイプ
プロパティ
|
|
パブリック機能
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 ()を呼び出します。
例
... 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 pushButton = new QPushButton(tr("Start animation"), this); connect(pushButton, &QPushButton::clicked, timeLine, &QTimeLine::start); ...
デフォルトでは、タイムラインは最初から最後まで1回だけ実行されます。このとき、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::Forward | 0 | タイムラインの現在時刻は時間と共に増加する(すなわち、0から終了/継続時間に向かって移動する)。 |
QTimeLine::Backward | 1 | タイムラインの現在時刻は時間と共に減少する(つまり、終了/継続時間から0に向かって移動する)。 |
setDirection()も参照してください 。
enum QTimeLine::State
この列挙型はタイムラインの状態を記述する。
定数 | 値 | 説明 |
---|---|---|
QTimeLine::NotRunning | 0 | タイムラインは実行されていない。これはQTimeLine の初期状態であり、終了時にQTimeLine が再び入る状態である。setCurrentTime() が呼び出されるか、start() が呼び出されてタイムラインが開始されるまで、現在の時間、フレーム、値は変更されません。 |
QTimeLine::Paused | 1 | タイムラインは一時停止される(つまり、一時的に中断される)。setPaused (false)を呼び出すと、タイムラインのアクティビティが再開される。 |
QTimeLine::Running | 2 | タイムラインは実行中です。制御がイベントループ内にある間、QTimeLine は一定間隔で現在時刻を更新し、必要に応じてvalueChanged() とframeChanged() を呼び出します。 |
state() とstateChanged()も 参照のこと。
プロパティ・ドキュメント
[bindable]
currentTime : int
注意: このプロパティはQProperty バインディングに対応しています。
このプロパティはタイムラインの現在時刻を保持する。
QTimeLine が Running 状態の場合、この値はタイムラインの期間と方向の関数として連続的に更新される。それ以外の場合は、stop() が最後に呼び出されたときの値、または setCurrentTime() で設定された値になります。
注: 他のプロパティをcurrentTimeにバインドすることはできますが、バインディングを設定することはお勧めしません。アニメーションが進行すると、currentTimeは自動的に更新され、バインディングはキャンセルされます。
デフォルトでは、このプロパティには0が格納されています。
[bindable]
direction : Direction
注意: このプロパティはQProperty バインディングに対応しています。
このプロパティは、QTimeLine がRunning の状態にあるときのタイムラインの方向を保持する。
この方向は、start()が呼び出された後、時間が0からタイムラインの継続時間に向かって移動するか、継続時間の値から0に向かって移動するかを示します。
方向のバインディングは、setDirection()だけでなく、toggleDirection()によっても削除される。
デフォルトでは、このプロパティはForward に設定されています。
[bindable]
duration : int
注: このプロパティはQProperty バインディングに対応しています。
このプロパティは、タイムラインの合計継続時間をミリ秒単位で保持します。
デフォルトでは、この値は1000(つまり1秒)ですが、QTimeLine'のコンストラクタに継続時間を渡すか、setDuration()を呼び出すことで変更できます。持続時間は0より大きくなければならない。
注意: 持続時間を変更しても、現在時刻がゼロにリセットされたり、新しい持続時間が設定されたりすることはありません。また、希望する値を指定してsetCurrentTime() を呼び出す必要がある。
[bindable]
easingCurve : QEasingCurve
注意: このプロパティはQProperty バインディングに対応しています。
タイムラインが使用するイージングカーブを指定します。valueForTime() が再実装された場合、この値は無視されます。
valueForTime()も参照してください 。
[bindable]
loopCount : int
Note: このプロパティはQProperty バインディングに対応しています。
このプロパティはTimelineが終了するまでにループする回数を保持します。
ループ回数が0であれば、タイムラインは永遠にループする。
デフォルトでは、このプロパティは1の値を含んでいます。
[bindable]
updateInterval : int
注: このプロパティはQProperty バインディングに対応している。
このプロパティは、QTimeLine が現在時刻を更新する間の時間をミリ秒単位で保持する。
現在時刻を更新する際、QTimeLine は、現在値が変更された場合はvalueChanged() を、フレームが変更された場合はframeChanged() を発行します。
デフォルトでは、間隔は40ミリ秒であり、これは1秒あたり25回の更新に相当する。
メンバー関数ドキュメント
[explicit]
QTimeLine::QTimeLine(int duration = 1000, QObject *parent = nullptr)
duration parent は のコンストラクタに渡される。デフォルトの継続時間は1000ミリ秒です。QObject
[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() を呼び出すと、valueForTime() の戻り値を使用して補間することにより、各時間値についてQTimeLine が対応するフレームを見つける。
Running 状態のとき、QTimeLine は、フレームが変化するとframeChanged() シグナルも発する。
startFrame()、endFrame()、start()、currentFrame()も参照してください 。
[slot]
void QTimeLine::setPaused(bool paused)
paused が true の場合、タイムラインは一時停止され、QTimeLine が Paused 状態になる。start()またはsetPaused(false)が呼び出されるまで、更新は通知されない。paused がfalseの場合、タイムラインは再開され、元の状態に戻ります。
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()も参照してください 。
© 2025 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.