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)
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イージング(QEasingCurve::InOutQuad);for(qrealt= 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 のタイプによって異なります。振幅へのアクセスは、弾性曲線やバウンス曲線など、バネのように動作する曲線で使用できます。振幅を変更すると、曲線の高さが変わります。周期へのアクセスは弾性カーブにのみ有効で、周期を高く設定するとバウンスの速度が遅くなります。InBackOutBackInOutBackOutInBack のような「ブーメラン」動作をする曲線にのみ、オーバーシュート設定があります。これらの曲線は終点を超えて補間し、終点に戻るというブーメランに似た動作をします。

Easing Curves Exampleには、QEasingCurveタイプのサンプルが含まれており、カーブの設定を変更することができます。

メンバー・タイプのドキュメント

QEasingCurve::EasingFunction

これは、以下のシグネチャを持つ関数へのポインタの型定義である:

qreal myEasingFunction(qreal progress);

enum QEasingCurve::Type

緩和曲線の種類。

一定
QEasingCurve::Linear0

一次(t)関数のイージングカーブ:速度が一定。

一定
QEasingCurve::InQuad1

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

一定
QEasingCurve::OutQuad2

二次(t^2)関数のイージングカーブ:速度ゼロからの減速。

一定
QEasingCurve::InOutQuad3

二次(t^2)関数のイージングカーブ:途中まで加速、その後減速。

一定
QEasingCurve::OutInQuad4

二次(t^2)関数のイージングカーブ:途中まで減速、その後加速。

一定
QEasingCurve::InCubic5

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

一定
QEasingCurve::OutCubic6

次関数(t^3)のイージングカーブ:速度ゼロからの減速。

一定
QEasingCurve::InOutCubic7

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

一定
QEasingCurve::OutInCubic8

次(t^3)関数のイージングカーブ:途中まで減速、その後加速。

一定
QEasingCurve::InQuart9

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

一定
QEasingCurve::OutQuart10

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

一定
QEasingCurve::InOutQuart11

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

一定
QEasingCurve::OutInQuart12

4次(t^4)関数のイージングカーブ:途中まで減速、その後加速。

定数
QEasingCurve::InQuint13

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

一定
QEasingCurve::OutQuint14

5進法(t^5)のイージングカーブ:速度ゼロからの減速。

一定
QEasingCurve::InOutQuint15

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

一定
QEasingCurve::OutInQuint16

5次関数(t^5)のイージングカーブ:途中まで減速、その後加速。

定数
QEasingCurve::InSine17

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

一定
QEasingCurve::OutSine18

正弦波(sin(t))関数のイージングカーブ:速度ゼロからの減速。

一定
QEasingCurve::InOutSine19

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

一定
QEasingCurve::OutInSine20

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

一定
QEasingCurve::InExpo21

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

一定
QEasingCurve::OutExpo22

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

一定
QEasingCurve::InOutExpo23

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

一定
QEasingCurve::OutInExpo24

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

一定
QEasingCurve::InCirc25

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

一定
QEasingCurve::OutCirc26

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

一定
QEasingCurve::InOutCirc27

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

一定
QEasingCurve::OutInCirc28

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

定数
QEasingCurve::InElastic29

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

定数
QEasingCurve::OutElastic30

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

定数
QEasingCurve::InOutElastic31

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

定数
QEasingCurve::OutInElastic32

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

一定
QEasingCurve::InBack33

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

一定
QEasingCurve::OutBack34

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

一定
QEasingCurve::InOutBack35

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

定数
QEasingCurve::OutInBack36

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

一定
QEasingCurve::InBounce37

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

一定
QEasingCurve::OutBounce38

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

一定
QEasingCurve::InOutBounce39

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

一定
QEasingCurve::OutInBounce40

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

一定説明
QEasingCurve::BezierSpline45三次ベジエスプラインを使用したカスタムイージングカーブの定義が可能
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)

Move-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) で終わる必要があることに注意してください。c1c2 は、曲線を描画するために使用される制御点です。endPoint は、曲線の終点です。

void QEasingCurve::addTCBSegment(const QPointF &nextPoint, qreal t, qreal c, qreal b)

カスタムイージングカーブを定義するために TCB ベジエスプラインのセグメントを追加します。type() がQEasingCurve::TCBSpline の場合のみ適用可能です。スプラインは (0.0, 0.0) で明示的に開始し、 (1.0, 1.0) で終了する必要があります。tensiont は、接線ベクトルの長さを変更します。continuityc は、接線間の変化の鋭さを変える。biasb は接線ベクトルの方向を変更します。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()も参照

qreal QEasingCurve::overshoot() const

Overshoot関数は、オーバーシュートを返します。すべてのカーブタイプに適用できるわけではありません。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 で定義したカスタムイージングカーブを設定します。type QEasingCurve::Custom func この関数のシグネチャは qreal myEasingFunction(qreal progress) で、progressと戻り値は 0 から 1 の間で正規化されているとみなされます。

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)

Move-other をこのQEasingCurve インスタンスに割り当てる。

QEasingCurve &QEasingCurve::operator=(const QEasingCurve &other)

コピーother.

関連 非会員

[noexcept] bool operator!=(const QEasingCurve &lhs, const QEasingCurve &rhs)

イージング曲線lhsrhs を比較し、等しくなければtrue を返し、等しくなければfalse を返す。また、曲線の特性も比較します。

operator==()も参照してください

QDataStream &operator<<(QDataStream &stream, const QEasingCurve &easing)

与えられたeasing 曲線を与えられたstream に書き込み、ストリームへの参照を返します。

Qt データ型のシリアライズも参照してください

[noexcept] bool operator==(const QEasingCurve &lhs, const QEasingCurve &rhs)

イージングカーブlhsrhs を比較し、等しければtrue を返し、そうでなければfalse を返す。また、曲線の特性も比較します。

QDataStream &operator>>(QDataStream &stream, QEasingCurve &easing)

与えられたstream から与えられたeasing カーブにイージングカーブを読み込み、ストリームへの参照を返します。

Qt データ型のシリアライズも参照してください

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