QTimeLine Class
QTimeLineクラスはアニメーションを制御するためのタイムラインを提供します。詳細...
Header: | #include <QTimeLine> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Inherits: | 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
注: このプロパティは、QProperty バインディングに対応しています。
このプロパティは、タイムラインが終了するまでのループ回数を保持します。
ループ回数が0の場合、タイムラインは永遠にループする。
デフォルトでは、このプロパティは1の値を含んでいます。
[bindable]
updateInterval : int
Note: このプロパティは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 frame は現在のフレーム番号です。 状態のとき、一定間隔でこのシグナルを発しますが、現在のフレームが変化した場合のみです。Running
注: これはプライベートシグナルです。シグナル接続で使用することはできますが、ユーザーが発することはできません。
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()
タイムラインの方向を切り替えます。方向が Forward だった場合、Backward になります。
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()も参照してください 。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。