QEasingCurve Class
QEasingCurve クラスは、アニメーションを制御するためのイージングカーブを提供します。詳細...
| ヘッダー: | #include <QEasingCurve> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- 継承されたメンバーを含む、すべてのメンバーの一覧
- QEasingCurveは、Animation Frameworkの一部です。
パブリック型
| EasingFunction | |
| enum | Type { Linear, InQuad, OutQuad, InOutQuad, OutInQuad, …, Custom } |
パブリック関数
| QEasingCurve(QEasingCurve::Type type = Linear) | |
| QEasingCurve(const QEasingCurve &other) | |
| QEasingCurve(QEasingCurve &&other) | |
| ~QEasingCurve() | |
| void | addCubicBezierSegment(const QPointF &c1, const QPointF &c2, const QPointF &endPoint) |
| void | addTCBSegment(const QPointF &nextPoint, qreal t, qreal c, qreal b) |
| qreal | amplitude() const |
| QEasingCurve::EasingFunction | customType() const |
| qreal | overshoot() const |
| qreal | period() const |
| void | setAmplitude(qreal amplitude) |
| void | setCustomType(QEasingCurve::EasingFunction func) |
| void | setOvershoot(qreal overshoot) |
| void | setPeriod(qreal period) |
| void | setType(QEasingCurve::Type type) |
| void | swap(QEasingCurve &other) |
| QList<QPointF> | toCubicSpline() const |
| QEasingCurve::Type | type() const |
| qreal | valueForProgress(qreal progress) const |
| QEasingCurve & | operator=(QEasingCurve &&other) |
| QEasingCurve & | operator=(const QEasingCurve &other) |
静的パブリックメンバー
(since 6.12) QEasingCurve | fromCubicBezier(QPointF c1, QPointF c2) |
関連する非メンバー
| bool | operator!=(const QEasingCurve &lhs, const QEasingCurve &rhs) |
| QDataStream & | operator<<(QDataStream &stream, const QEasingCurve &easing) |
| bool | operator==(const QEasingCurve &lhs, const QEasingCurve &rhs) |
| QDataStream & | operator>>(QDataStream &stream, QEasingCurve &easing) |
詳細説明
イージングカーブは、0 から 1 までの補間速度を制御する関数を表します。イージングカーブを使用することで、単純な一定速度の場合よりも、ある値から別の値への遷移をより自然に見せることができます。 QEasingCurveクラスは通常、QVariantAnimation クラスやQPropertyAnimation クラスと組み合わせて使用されますが、単独でも使用可能です。通常、このクラスは、ゼロ速度からの補間を加速させる(イーズイン)場合や、ゼロ速度まで減速させる(イーズアウト)場合に使用されます。また、同じイージングカーブ内でイーズインとイーズアウトを組み合わせることも可能です。
補間の速度を計算するために、イージングカーブはvalueForProgress() 関数を提供します。ここで、progress 引数は補間の進行度を指定します。0 は補間の開始値、1 は補間の終了値です。 返される値は、補間の実質的な進行度です。すべての入力値に対して返される値が入力値と等しい場合、イージングカーブは線形カーブとなります。これがデフォルトの挙動です。
例えば、
QEasingCurve easing(QEasingCurve::InOutQuad);
for(qreal t= 0.0; t< 1.0; t+= 0.1)
qWarning() << "Effective progress" << t << "is"
<<easing.valueForProgress(t);これにより、0 から 1 までの補間の実際の進行状況が出力されます。
QPropertyAnimation を使用する場合、関連付けられたイージングカーブが、startValue と endValue 間の補間の進行を制御するために使用されます:
QPropertyAnimation animation;
animation.setStartValue(0);
animation.setEndValue(1000);
animation.setDuration(1000);
animation.setEasingCurve(QEasingCurve::InOutQuad);振幅、オーバーシュート、周期の設定可否は、QEasingCurveのタイプによって異なります。振幅の設定は、elasticやbounceなどのバネのように振る舞う曲線で利用可能です。振幅を変更すると、曲線の高さが変化します。 周期の設定はelasticカーブでのみ利用可能であり、周期を大きく設定すると跳ね返りの速度が遅くなります。オーバーシュートの設定が可能なのは、InBack 、OutBack 、InOutBack 、OutInBack など、「ブーメラン」のような挙動を示すカーブのみです。これらのカーブは、終点を越えて補間を行い、その後終点に戻るため、ブーメランと同様の挙動を示します。
「Easing Curves Example」には、QEasingCurve 型のサンプルが含まれており、カーブの設定を変更することができます。
メンバ型のドキュメント
QEasingCurve::EasingFunction
これは、以下のシグネチャを持つ関数へのポインタのtypedefです:
enum QEasingCurve::Type
緩和曲線の種類。
| 一定 | 値 |
|---|---|
QEasingCurve::Linear | 0 |

線形(t)関数のイージングカーブ:速度は一定です。
| 定数 | 値 |
|---|---|
QEasingCurve::InQuad | 1 |

2次関数(t²)のイージング曲線:速度がゼロから加速する。
| 定数 | 値 |
|---|---|
QEasingCurve::OutQuad | 2 |

2次関数(t^2)のイージング曲線:速度がゼロまで減速する場合。
| 定数 | 値 |
|---|---|
QEasingCurve::InOutQuad | 3 |

2次関数(t^2)のイージングカーブ:中間点まで加速し、その後減速する。
| 定数 | 値 |
|---|---|
QEasingCurve::OutInQuad | 4 |

2次関数 (t^2) のイージングカーブ:中間点までは減速し、その後加速する。
| 定数 | 値 |
|---|---|
QEasingCurve::InCubic | 5 |

3次(t^3)関数のイージング曲線:速度ゼロから加速する。
| 定数 | 値 |
|---|---|
QEasingCurve::OutCubic | 6 |

3次関数(t^3)のイージング曲線:速度がゼロまで減速する場合。
| 定数 | 値 |
|---|---|
QEasingCurve::InOutCubic | 7 |

3次(t^3)関数のイージング曲線:中間点まで加速し、その後減速する。
| 定数 | 値 |
|---|---|
QEasingCurve::OutInCubic | 8 |

3次関数 (t^3) のイージング曲線:中間点までは減速し、その後は加速する。
| 定数 | 値 |
|---|---|
QEasingCurve::InQuart | 9 |

4次(t^4)関数のイージングカーブ:速度ゼロから加速する。
| 定数 | 値 |
|---|---|
QEasingCurve::OutQuart | 10 |

4次関数 (t^4) のイージング曲線:速度がゼロまで減速する。
| 定数 | 値 |
|---|---|
QEasingCurve::InOutQuart | 11 |

4次関数 (t^4) のイージング曲線:中間点まで加速し、その後減速する。
| 定数 | 値 |
|---|---|
QEasingCurve::OutInQuart | 12 |

4次関数 (t^4) のイージング曲線:中間点までは減速し、その後は加速する。
| 定数 | 値 |
|---|---|
QEasingCurve::InQuint | 13 |

5次関数(t^5)のイージング曲線:ゼロ速度から加速する。
| 定数 | 値 |
|---|---|
QEasingCurve::OutQuint | 14 |

5次(t^5)関数のイージング曲線:速度がゼロまで減速する場合。
| 定数 | 値 |
|---|---|
QEasingCurve::InOutQuint | 15 |

5次関数 (t^5) のイージング曲線:中間点まで加速度が増加し、その後減速する。
| 定数 | 値 |
|---|---|
QEasingCurve::OutInQuint | 16 |

5次関数 (t^5) のイージング曲線:中間点までは減速し、その後は加速する。
| 定数 | 値 |
|---|---|
QEasingCurve::InSine | 17 |

正弦波(sin(t))関数のイージング曲線:速度ゼロから加速する。
| 定数 | 値 |
|---|---|
QEasingCurve::OutSine | 18 |

正弦波(sin(t))関数のイージング曲線:速度がゼロまで減速する。
| 定数 | 値 |
|---|---|
QEasingCurve::InOutSine | 19 |

正弦波(sin(t))関数のイージングカーブ:中間点まで加速し、その後減速する。
| 定数 | 値 |
|---|---|
QEasingCurve::OutInSine | 20 |

正弦波(sin(t))関数のイージングカーブ:中間点までは減速し、その後加速する。
| 定数 | 値 |
|---|---|
QEasingCurve::InExpo | 21 |

指数関数(2^t)のイージングカーブ:速度ゼロから加速する。
| 定数 | 値 |
|---|---|
QEasingCurve::OutExpo | 22 |

指数関数(2^t)のイージング曲線:速度がゼロまで減速する。
| 定数 | 値 |
|---|---|
QEasingCurve::InOutExpo | 23 |

指数関数(2^t)のイージングカーブ:中間点まで加速し、その後減速する。
| 定数 | 値 |
|---|---|
QEasingCurve::OutInExpo | 24 |

指数関数(2^t)のイージングカーブ:中間点までは減速し、その後は加速する。
| 定数 | 値 |
|---|---|
QEasingCurve::InCirc | 25 |

円形関数(sqrt(1-t^2))のイージングカーブ:速度ゼロから加速する。
| 定数 | 値 |
|---|---|
QEasingCurve::OutCirc | 26 |

円形(sqrt(1-t^2))関数のイージングカーブ:速度がゼロまで減速する。
| 定数 | 値 |
|---|---|
QEasingCurve::InOutCirc | 27 |

円形(sqrt(1-t^2))関数のイージングカーブ:中間点まで加速し、その後減速する。
| 定数 | 値 |
|---|---|
QEasingCurve::OutInCirc | 28 |

円形(sqrt(1-t^2))関数のイージング曲線:中間点までは減速し、その後は加速する。
| 定数 | 値 |
|---|---|
QEasingCurve::InElastic | 29 |

弾性(指数関数的に減衰する正弦波)関数のイージングカーブ:速度ゼロから加速します。ピーク振幅はamplitudeパラメータで、減衰周期はperiodパラメータで設定できます。
| 定数 | 値 |
|---|---|
QEasingCurve::OutElastic | 30 |

弾性(指数関数的に減衰する正弦波)関数のイージングカーブ:速度がゼロまで減速する場合。ピーク振幅は「振幅」パラメータで、減衰の周期は「周期」パラメータで設定できます。
| 定数 | 値 |
|---|---|
QEasingCurve::InOutElastic | 31 |

弾性(指数関数的に減衰する正弦波)関数のイージングカーブ:中間点まで加速し、その後減速する。
| 定数 | 値 |
|---|---|
QEasingCurve::OutInElastic | 32 |

弾性(指数関数的に減衰する正弦波)関数のイージングカーブ:中間点まで減速し、その後加速する。
| 定数 | 値 |
|---|---|
QEasingCurve::InBack | 33 |

バック(オーバーシュートする3次関数:(s+1)*t^3 - s*t^2)のイージングカーブ:ゼロ速度から加速する。
| 定数 | 値 |
|---|---|
QEasingCurve::OutBack | 34 |

バック(オーバーシュートする3次関数:(s+1)*t^3 - s*t^2)のイージングカーブ(アウト):速度をゼロまで減速する。
| 定数 | 値 |
|---|---|
QEasingCurve::InOutBack | 35 |

InOutBack関数}
バックのイージングカーブ(オーバーシュートする3次関数:(s+1)*t^3 - s*t^2)。イン/アウトイージング:中間点まで加速し、その後減速する。
| 定数 | 値 |
|---|---|
QEasingCurve::OutInBack | 36 |

バックのイージングカーブ(オーバーシュート3次イージング:(s+1)*t^3 - s*t^2)。アウト/インのイージング:中間点までは減速し、その後は加速する。
| 定数 | 値 |
|---|---|
QEasingCurve::InBounce | 37 |

バウンスのイージング曲線(指数関数的に減衰する放物線状のバウンス)関数:速度ゼロから加速する。
| 定数 | 値 |
|---|---|
QEasingCurve::OutBounce | 38 |

バウンス(指数関数的に減衰する放物線状のバウンス)関数のイージングカーブ:速度ゼロから減速する場合。
| 定数 | 値 |
|---|---|
QEasingCurve::InOutBounce | 39 |

バウンス(指数関数的に減衰する放物線状のバウンス)関数のイージングカーブ(イン/アウト):中間点までは加速し、その後は減速します。
| 定数 | 値 |
|---|---|
QEasingCurve::OutInBounce | 40 |

バウンス(指数関数的に減衰する放物線状のバウンス)関数のイージングアウト/インのイージングカーブ:中間点までは減速し、その後は加速します。
| 定数 | 値 | 説明 |
|---|---|---|
QEasingCurve::BezierSpline | 45 | 3次ベジエ・スプラインを使用して、カスタムイージングカーブを定義できます。 |
QEasingCurve::TCBSpline | 46 | TCB スプラインを使用してカスタムイージングカーブを定義できます。 |
QEasingCurve::Custom | 47 | ユーザーがsetCustomType()でカスタムカーブタイプを指定した場合、これが返されます。この値ではsetType()を呼び出すことはできませんが、type()がこれを返す可能性があることに注意してください。 |
addCubicBezierSegment() およびaddTCBSegment()も参照してください 。
メンバ関数のドキュメント
QEasingCurve::QEasingCurve(QEasingCurve::Type type = Linear)
指定されたtype のイージング曲線を生成します。
QEasingCurve::QEasingCurve(const QEasingCurve &other)
other のコピーを作成してください。
[noexcept] QEasingCurve::QEasingCurve(QEasingCurve &&other)
QEasingCurveのインスタンスをムーブコンストラクタで生成し、other が指していたのと同じオブジェクトを指すようにします。
[noexcept] QEasingCurve::~QEasingCurve()
デストラクタ。
void QEasingCurve::addCubicBezierSegment(const QPointF &c1, const QPointF &c2, const QPointF &endPoint)
カスタムイージングカーブを定義するために、3次ベジエスプラインのセグメントを追加します。 これは、type()がQEasingCurve::BezierSpline の場合にのみ適用されます。スプラインは暗黙的に(0.0, 0.0)から始まり、有効なイージングカーブとなるためには(1.0, 1.0)で終わらなければならないことに注意してください。c1 およびc2 は、曲線を描画するために使用される制御点です。endPoint は曲線の終点です。
fromCubicBezier()も参照してください 。
void QEasingCurve::addTCBSegment(const QPointF &nextPoint, qreal t, qreal c, qreal b)
TCBベジエスプラインのセグメントを追加して、カスタムイージングカーブを定義します。これは、type() がQEasingCurve::TCBSpline の場合にのみ適用可能です。有効なイージングカーブとするには、スプラインは明示的に (0.0, 0.0) から始まり、(1.0, 1.0) で終わっている必要があります。 張力(t )は接線ベクトルの長さを変更します。連続性(c )は接線間の変化の急峻さを変更します。バイアス(b )は接線ベクトルの方向を変更します。nextPoint はサンプル位置です。これら3つのパラメータはすべて-1から1の範囲で有効であり、制御点の接線を定義します。 3つのパラメータすべてが0の場合、結果として得られるスプラインはCatmull-Romスプラインとなります。外側の接線は定義されないため、始点と終点のバイアスは常に-1および1となります。
qreal QEasingCurve::amplitude() const
振幅を返します。これはすべての曲線タイプに適用されるわけではありません。バウンス曲線および弾性曲線(type()、QEasingCurve::InBounce 、QEasingCurve::OutBounce 、QEasingCurve::InOutBounce 、QEasingCurve::OutInBounce 、QEasingCurve::InElastic 、QEasingCurve::OutElastic 、QEasingCurve::InOutElastic 、またはQEasingCurve::OutInElastic で生成された曲線)にのみ適用されます。
setAmplitude()も参照してください 。
QEasingCurve::EasingFunction QEasingCurve::customType() const
カスタムイージングカーブへの関数ポインタを返します。type() がQEasingCurve::Custom を返さない場合、この関数は 0 を返します。
setCustomType()も参照してください 。
[static, since 6.12] QEasingCurve QEasingCurve::fromCubicBezier(QPointF c1, QPointF c2)
指定されたc1 およびc2 の制御点を持つ3次ベジェ曲線を返します。
3次ベジェ曲線は、4つの制御点 C0、C1、C2、および C3 によって定義されます。C0 と C3 は、それぞれ始点と終点に対応します。 この関数は、始点 C0 が (0, 0) に、終点 C3 が (1, 1) に固定された3次ベジェ曲線を返します。
これは便利なヘルパー関数であり、addCubicBezierSegment(c1, c2,QPointF(1, 1)) を呼び出すのと同じです。より複雑な3次ベジェスプラインを構築する必要がある場合は、代わりにaddCubicBezierSegment() 関数を使用してください。
この関数は Qt 6.12 で導入されました。
addCubicBezierSegment()も参照してください 。
qreal QEasingCurve::overshoot() const
オーバーシュートを返します。これはすべての曲線タイプに適用されるわけではありません。type() の値がQEasingCurve::InBack 、QEasingCurve::OutBack 、QEasingCurve::InOutBack 、またはQEasingCurve::OutInBack の場合にのみ適用されます。
setOvershoot()も参照してください 。
qreal QEasingCurve::period() const
周期を返します。これはすべての曲線タイプに適用されるわけではありません。type() の値がQEasingCurve::InElastic 、QEasingCurve::OutElastic 、QEasingCurve::InOutElastic 、またはQEasingCurve::OutInElastic の場合にのみ適用されます。
setPeriod()も参照してください 。
void QEasingCurve::setAmplitude(qreal amplitude)
振幅をamplitude に設定します。
これにより、バウンスの振幅、あるいは弾性「スプリング」効果の振幅が設定されます。数値が大きいほど、振幅も大きくなります。
amplitude()も参照してください 。
void QEasingCurve::setCustomType(QEasingCurve::EasingFunction func)
関数func 内でユーザーが定義したカスタムイージングカーブを設定します。 この関数のシグネチャは `qreal myEasingFunction(qreal progress)` であり、`progress`および戻り値は 0 から 1 の間で正規化されたものとみなされます(場合によっては、戻り値がこの範囲外になることもあります)。この関数を呼び出した後、`type()` は `QEasingCurve::Custom` を返します。`func ` は `nullptr` になることはできません。
customType() およびvalueForProgress()も参照してください 。
void QEasingCurve::setOvershoot(qreal overshoot)
オーバーシュートをovershoot に設定します。
0 に設定するとオーバーシュートは発生せず、デフォルト値の 1.70158 に設定すると 10 パーセントのオーバーシュートが発生します。
overshoot()も参照してください 。
void QEasingCurve::setPeriod(qreal period)
周期をperiod に設定します。周期の値を小さく設定すると、曲線の高周波数になります。周期を大きくすると、低周波数になります。
period()も参照してください 。
void QEasingCurve::setType(QEasingCurve::Type type)
イージングカーブのタイプを「type 」に設定します。
type()も参照してください 。
[noexcept] void QEasingCurve::swap(QEasingCurve &other)
このカーブをother と入れ替えます。この操作は非常に高速で、失敗することはありません。
QList<QPointF> QEasingCurve::toCubicSpline() const
カスタムイージングカーブを定義するcubicBezierSplineを返します。イージングカーブにカスタムベジエ・イージングカーブが含まれていない場合、リストは空になります。
QEasingCurve::Type QEasingCurve::type() const
イージングカーブの型を返します。
setType()も参照してください 。
qreal QEasingCurve::valueForProgress(qreal progress) const
progress におけるイージング曲線の実効進行度を返します。progress は 0 から 1 の範囲でなければなりませんが、返される実効進行度はその範囲外になる場合があります。たとえば、QEasingCurve::InBack では、関数の開始時に負の値が返されます。
[noexcept] QEasingCurve &QEasingCurve::operator=(QEasingCurve &&other)
other をこのQEasingCurve インスタンスに割り当てます。
QEasingCurve &QEasingCurve::operator=(const QEasingCurve &other)
other をコピー。
関連する非会員
[noexcept] bool operator!=(const QEasingCurve &lhs, const QEasingCurve &rhs)
イージングカーブ `lhs ` と `rhs ` を比較し、両者が等しくない場合は `true ` を返し、等しい場合は `false` を返します。また、カーブのプロパティも比較します。
operator==()も参照してください 。
QDataStream &operator<<(QDataStream &stream, const QEasingCurve &easing)
指定されたeasing カーブを指定されたstream に書き込み、そのストリームへの参照を返します。
警告: QEasingCurve::Custom 型のイージングカーブ(つまり、カスタムイージング関数を持つカーブ)の書き込みは サポートされていません。
「Qt データ型のシリアライズ」も参照してください 。
[noexcept] bool operator==(const QEasingCurve &lhs, const QEasingCurve &rhs)
イージングカーブ `lhs ` と `rhs ` を比較し、両者が等しい場合は `true ` を返し、そうでない場合は `false` を返します。また、カーブのプロパティも比較します。
QDataStream &operator>>(QDataStream &stream, QEasingCurve &easing)
指定されたstream からイージングカーブを読み取り、指定されたeasing のカーブに書き込み、ストリームへの参照を返します。
「Qtデータ型のシリアライズ」も参照してください 。
© 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.