このページでは

QEasingCurve Class

QEasingCurve クラスは、アニメーションを制御するためのイージングカーブを提供します。詳細...

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

パブリック型

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です:

qreal myEasingFunction(qreal progress);

enum QEasingCurve::Type

緩和曲線の種類。

一定値
QEasingCurve::Linear0

線形関数のグラフ。

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

定数値
QEasingCurve::InQuad1

非2次関数のグラフ。

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

定数値
QEasingCurve::OutQuad2

aの2次関数のグラフ

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

定数値
QEasingCurve::InOutQuad3

InOutquad 二次関数のグラフ

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

定数値
QEasingCurve::OutInQuad4

OutInquad 二次関数のグラフ

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

定数値
QEasingCurve::InCubic5

InCubic関数のグラフ

3次(t^3)関数のイージング曲線:速度ゼロから加速する。

定数値
QEasingCurve::OutCubic6

OutCubic関数のグラフ

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

定数値
QEasingCurve::InOutCubic7

InOutCubic関数のグラフ。

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

定数値
QEasingCurve::OutInCubic8

OutInCubic関数のグラフ。

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

定数値
QEasingCurve::InQuart9

InQuartic関数のグラフ。

4次(t^4)関数のイージングカーブ:速度ゼロから加速する。

定数値
QEasingCurve::OutQuart10

OutQuartic関数のグラフ。

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

定数値
QEasingCurve::InOutQuart11

InOutQuartic関数のグラフ。

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

定数値
QEasingCurve::OutInQuart12

OutInQuartic関数のグラフ。

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

定数値
QEasingCurve::InQuint13

5次関数のグラフ

5次関数(t^5)のイージング曲線:ゼロ速度から加速する。

定数値
QEasingCurve::OutQuint14

5次関数 a のグラフ

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

定数値
QEasingCurve::InOutQuint15

InOutQuintic関数のグラフ

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

定数値
QEasingCurve::OutInQuint16

OutInQuintic関数のグラフ

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

定数値
QEasingCurve::InSine17

非正弦波関数のグラフ

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

定数値
QEasingCurve::OutSine18

非正弦関数のグラフ

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

定数値
QEasingCurve::InOutSine19

InOutSinusoidal関数のグラフ

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

定数値
QEasingCurve::OutInSine20

Aの正弦関数のグラフ

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

定数値
QEasingCurve::InExpo21

InExponential関数のグラフ

指数関数(2^t)のイージングカーブ:速度ゼロから加速する。

定数値
QEasingCurve::OutExpo22

Aの指数関数のグラフ

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

定数値
QEasingCurve::InOutExpo23

InOutExponential関数のグラフ

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

定数値
QEasingCurve::OutInExpo24

AのOutInExponential関数のグラフ

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

定数値
QEasingCurve::InCirc25

InCircular関数のグラフ

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

定数値
QEasingCurve::OutCirc26

OutCircular関数のグラフ

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

定数値
QEasingCurve::InOutCirc27

InOutCircular関数のグラフ

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

定数値
QEasingCurve::OutInCirc28

OutInCircular関数のグラフ

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

定数値
QEasingCurve::InElastic29

非弾性関数のグラフ

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

定数値
QEasingCurve::OutElastic30

OutElastic関数のグラフ

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

定数値
QEasingCurve::InOutElastic31

InOutElastic関数のグラフ

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

定数値
QEasingCurve::OutInElastic32

OutInElastic関数のグラフ

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

定数値
QEasingCurve::InBack33

InBack関数のグラフ

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

定数値
QEasingCurve::OutBack34

OutBack関数のグラフ

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

定数値
QEasingCurve::InOutBack35

aのグラフ

InOutBack関数}

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

定数値
QEasingCurve::OutInBack36

OutInBack関数のグラフ

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

定数値
QEasingCurve::InBounce37

InBounce関数のグラフ

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

定数値
QEasingCurve::OutBounce38

OutBounce関数のグラフ

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

定数値
QEasingCurve::InOutBounce39

InOutBounce関数のグラフ

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

定数値
QEasingCurve::OutInBounce40

OutInBounce関数のグラフ

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

定数値説明
QEasingCurve::BezierSpline453次ベジエ・スプラインを使用して、カスタムイージングカーブを定義できます。
QEasingCurve::TCBSpline46TCB スプラインを使用してカスタムイージングカーブを定義できます。
QEasingCurve::Custom47ユーザーが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.