QEasingCurve Class

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

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

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

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

QEasingCurve::EasingFunction

これは、以下のシグネチャを持つ関数へのポインタの typedef です:

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

amplitude関数は振幅を返します。これはすべてのカーブタイプに適用できるわけではありません。バウンス曲線と弾性曲線(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

オーバーシュートを返します。これは、すべての曲線タイプに適用できるわけではありません。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 は 0 にはできません。

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 データ型のシリアライズも参照してください

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。