QEasingCurve Class

Die Klasse QEasingCurve bietet Lockerungskurven zur Steuerung der Animation. Mehr...

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

Öffentliche Typen

EasingFunction
enum Type { Linear, InQuad, OutQuad, InOutQuad, OutInQuad, …, Custom }

Öffentliche Funktionen

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)

Detaillierte Beschreibung

Easing-Kurven beschreiben eine Funktion, die steuert, wie die Geschwindigkeit der Interpolation zwischen 0 und 1 sein soll. Easing-Kurven lassen Übergänge von einem Wert zum anderen natürlicher erscheinen, als es eine einfache konstante Geschwindigkeit erlauben würde. Die Klasse QEasingCurve wird in der Regel in Verbindung mit den Klassen QVariantAnimation und QPropertyAnimation verwendet, kann aber auch allein eingesetzt werden. Sie wird in der Regel verwendet, um die Interpolation von der Geschwindigkeit Null zu beschleunigen (Ease in) oder auf die Geschwindigkeit Null zu verlangsamen (Ease out). Ease-In und Ease-Out können auch in derselben Easing-Kurve kombiniert werden.

Um die Geschwindigkeit der Interpolation zu berechnen, bietet die Entspannungskurve die Funktion valueForProgress(), wobei das Argument progress den Fortschritt der Interpolation angibt: 0 ist der Startwert der Interpolation, 1 ist der Endwert der Interpolation. Der zurückgegebene Wert ist der effektive Fortschritt der Interpolation. Wenn der zurückgegebene Wert für alle Eingabewerte gleich dem Eingabewert ist, ist die Entspannungskurve eine lineare Kurve. Dies ist das Standardverhalten.

Zum Beispiel,

    QEasingCurve easing(QEasingCurve::InOutQuad); for (qreal t = 0.0; t < 1.0; t += 0.1)        qWarning() << "Effective progress" << t << "is"
                  << easing.valueForProgress(t);

gibt den effektiven Fortschritt der Interpolation zwischen 0 und 1 aus.

Bei Verwendung von QPropertyAnimation wird die zugehörige Lockerungskurve verwendet, um den Fortschritt der Interpolation zwischen startValue und endValue zu steuern:

    QPropertyAnimation animation;
    animation.setStartValue(0);
    animation.setEndValue(1000);
    animation.setDuration(1000);
    animation.setEasingCurve(QEasingCurve::InOutQuad);

Die Möglichkeit, eine Amplitude, einen Überschwinger oder eine Periode einzustellen, hängt vom Typ der QEasingCurve ab. Der Zugriff auf die Amplitude ist für Kurven verfügbar, die sich wie Federn verhalten, wie z. B. elastische Kurven und Bounce-Kurven. Das Ändern der Amplitude verändert die Höhe der Kurve. Der Zugriff auf die Periode ist nur bei elastischen Kurven möglich, und die Einstellung einer höheren Periode verlangsamt die Sprungrate. Nur Kurven mit "Bumerang"-Verhalten wie InBack, OutBack, InOutBack und OutInBack haben Überschwingungseinstellungen. Diese Kurven interpolieren über die Endpunkte hinaus und kehren zum Endpunkt zurück, ähnlich wie ein Bumerang.

Das Beispiel "Easing Curves" enthält Beispiele für QEasingCurve-Typen und ermöglicht es Ihnen, die Kurveneinstellungen zu ändern.

Dokumentation der Mitgliedstypen

QEasingCurve::EasingFunction

Dies ist ein Typedef für einen Zeiger auf eine Funktion mit der folgenden Signatur:

qreal myEasingFunction(qreal progress);

enum QEasingCurve::Type

Die Art der Entspannungskurve.

KonstanteWert
QEasingCurve::Linear0

Entspannungskurve für eine lineare (t) Funktion: Die Geschwindigkeit ist konstant.

KonstantWert
QEasingCurve::InQuad1

Beschleunigungskurve für eine quadratische (t^2) Funktion: Beschleunigung von der Geschwindigkeit Null.

KonstantWert
QEasingCurve::OutQuad2

Abschwächungskurve für eine quadratische (t^2)-Funktion: Abbremsen bis zur Geschwindigkeit Null.

KonstantWert
QEasingCurve::InOutQuad3

Easing-Kurve für eine quadratische (t^2)-Funktion: Beschleunigung bis zur Hälfte, dann Abbremsen.

KonstantWert
QEasingCurve::OutInQuad4

Abschwächungskurve für eine quadratische (t^2)-Funktion: Verlangsamung bis zur Hälfte, dann Beschleunigung.

KonstanteWert
QEasingCurve::InCubic5

Entspannungskurve für eine kubische (t^3) Funktion: Beschleunigung von der Geschwindigkeit Null.

KonstantWert
QEasingCurve::OutCubic6

Abschwächungskurve für eine kubische (t^3)-Funktion: Abbremsen auf die Geschwindigkeit Null.

KonstantWert
QEasingCurve::InOutCubic7

Easing-Kurve für eine kubische (t^3)-Funktion: Beschleunigung bis zur Hälfte, dann Abbremsen.

KonstantWert
QEasingCurve::OutInCubic8

Abschwächungskurve für eine kubische (t^3)-Funktion: Verlangsamung bis zur Hälfte, dann Beschleunigung.

KonstantWert
QEasingCurve::InQuart9

Abschwächungskurve für eine quartische (t^4) Funktion: Beschleunigung von der Geschwindigkeit Null.

KonstantWert
QEasingCurve::OutQuart10

Abschwächungskurve für eine quartische (t^4)-Funktion: Abbremsen auf Geschwindigkeit Null.

KonstantWert
QEasingCurve::InOutQuart11

Abklingende Kurve für eine quartische (t^4) Funktion: Beschleunigung bis zur Hälfte, dann Abbremsen.

KonstantWert
QEasingCurve::OutInQuart12

Abschwächungskurve für eine quartische (t^4) Funktion: Verlangsamung bis zur Hälfte, dann Beschleunigung.

KonstanteWert
QEasingCurve::InQuint13

Abschwächungskurve für eine quintische (t^5) Abschwächung: Beschleunigung von der Geschwindigkeit Null.

KonstantWert
QEasingCurve::OutQuint14

Entspannungskurve für eine quintische (t^5) Funktion: Abbremsen auf die Geschwindigkeit Null.

KonstantWert
QEasingCurve::InOutQuint15

Abklingende Kurve für eine quintische (t^5) Funktion: Beschleunigung bis zur Hälfte, dann Abbremsen.

KonstantWert
QEasingCurve::OutInQuint16

Abschwächungskurve für eine quintische (t^5) Funktion: Verlangsamung bis zur Hälfte, dann Beschleunigung.

KonstanteWert
QEasingCurve::InSine17

Entspannungskurve für eine Sinusfunktion (sin(t)): Beschleunigung von der Geschwindigkeit Null.

KonstantWert
QEasingCurve::OutSine18

Abschwächungskurve für eine Sinusfunktion (sin(t)): Abbremsen auf die Geschwindigkeit Null.

KonstantWert
QEasingCurve::InOutSine19

Easing-Kurve für eine Sinusfunktion (sin(t)): Beschleunigung bis zur Hälfte, dann Abbremsen.

KonstantWert
QEasingCurve::OutInSine20

Abschwächungskurve für eine Sinusfunktion (sin(t)): Verzögerung bis zur Hälfte, dann Beschleunigung.

KonstanteWert
QEasingCurve::InExpo21

Entspannungskurve für eine Exponentialfunktion (2^t): Beschleunigung von der Geschwindigkeit Null.

KonstantWert
QEasingCurve::OutExpo22

Abschwächungskurve für eine Exponentialfunktion (2^t): Abbremsung bis zur Geschwindigkeit Null.

KonstantWert
QEasingCurve::InOutExpo23

Abklingende Kurve für eine Exponentialfunktion (2^t): Beschleunigung bis zur Hälfte, dann Abbremsen.

KonstantWert
QEasingCurve::OutInExpo24

Abschwächungskurve für eine Exponentialfunktion (2^t): Verlangsamung bis zur Hälfte, dann Beschleunigung.

KonstantWert
QEasingCurve::InCirc25

Entspannungskurve für eine Kreisfunktion (sqrt(1-t^2)): Beschleunigung von der Geschwindigkeit Null.

KonstantWert
QEasingCurve::OutCirc26

Abschwächungskurve für eine Kreisfunktion (sqrt(1-t^2)): Abbremsung auf die Geschwindigkeit Null.

KonstanteWert
QEasingCurve::InOutCirc27

Abklingende Kurve für eine Kreisfunktion (sqrt(1-t^2)): Beschleunigung bis zur Hälfte, dann Abbremsen.

KonstanteWert
QEasingCurve::OutInCirc28

Abschwächungskurve für eine Kreisfunktion (sqrt(1-t^2)): Verzögerung bis zur Hälfte, dann Beschleunigung.

KonstanteWert
QEasingCurve::InElastic29

Entspannungskurve für eine elastische Funktion (exponentiell abklingende Sinuswelle): Beschleunigung ab Geschwindigkeit Null. Die Spitzenamplitude kann mit dem Amplituden-Parameter und die Dauer des Abklingens mit dem Perioden-Parameter eingestellt werden.

KonstanteWert
QEasingCurve::OutElastic30

Abschwächungskurve für eine elastische (exponentiell abklingende Sinusfunktion): Abbremsung bis zur Geschwindigkeit Null. Die Spitzenamplitude kann mit dem Amplitudenparameter und die Abklingzeit mit dem Periodenparameter eingestellt werden.

KonstanteWert
QEasingCurve::InOutElastic31

Abklingende Kurve für eine elastische (exponentiell abklingende Sinusfunktion): Beschleunigung bis zur Hälfte, dann Abklingen.

KonstanteWert
QEasingCurve::OutInElastic32

Abschwächungskurve für eine elastische (exponentiell abklingende Sinusfunktion): Verlangsamung bis zur Hälfte, dann Beschleunigung.

KonstanteWert
QEasingCurve::InBack33

Entspannungskurve für eine rückläufige (überschießende kubische Funktion: (s+1)*t^3 - s*t^2): Beschleunigung von der Geschwindigkeit Null.

KonstanteWert
QEasingCurve::OutBack34

Abschwächungskurve für eine rückwärtige (überschießende kubische Funktion: (s+1)*t^3 - s*t^2) Abschwächung nach außen: Abschwächung auf die Geschwindigkeit Null.

KonstanteWert
QEasingCurve::InOutBack35

Abschwächungskurve für eine Rückwärtsbewegung (überschießende kubische Funktion: (s+1)*t^3 - s*t^2): Beschleunigung bis zur Hälfte, dann Abschwächung.

KonstanteWert
QEasingCurve::OutInBack36

Easing-Kurve für eine Rückwärtsbewegung (überschießende kubische Funktion: (s+1)*t^3 - s*t^2): Abbremsen bis zur Hälfte, dann Beschleunigen.

KonstanteWert
QEasingCurve::InBounce37

Easing-Kurve für eine Bounce-Funktion (exponentiell abklingende parabolische Bounce-Funktion): Beschleunigung von Geschwindigkeit Null.

KonstanteWert
QEasingCurve::OutBounce38

Easing-Kurve für eine Bounce-Funktion (exponentiell abklingende parabolische Bounce-Funktion): Abbremsen von der Geschwindigkeit Null.

KonstantWert
QEasingCurve::InOutBounce39

Easing-Kurve für eine Bounce-Funktion (exponentiell abklingende Parabelfunktion): Beschleunigung bis zur Hälfte, dann Abbremsen.

KonstanteWert
QEasingCurve::OutInBounce40

Easing-Kurve für eine Bounce-Funktion (exponentiell abklingende Parabelfunktion): Verlangsamung bis zur Hälfte, dann Beschleunigung.

KonstanteWertBeschreibung
QEasingCurve::BezierSpline45Ermöglicht die Definition einer benutzerdefinierten Lockerungskurve unter Verwendung eines kubischen Bezier-Splines
QEasingCurve::TCBSpline46Ermöglicht die Definition einer benutzerdefinierten Lockerungskurve unter Verwendung eines TCB-Splines
QEasingCurve::Custom47Dieser Wert wird zurückgegeben, wenn der Benutzer mit setCustomType() einen benutzerdefinierten Kurventyp angegeben hat. Beachten Sie, dass Sie setType() nicht mit diesem Wert aufrufen können, aber type() kann ihn zurückgeben.

Siehe auch addCubicBezierSegment() und addTCBSegment().

Dokumentation der Mitgliedsfunktionen

QEasingCurve::QEasingCurve(QEasingCurve::Type type = Linear)

Konstruiert eine Entspannungskurve mit der angegebenen type.

QEasingCurve::QEasingCurve(const QEasingCurve &other)

Konstruieren Sie eine Kopie von other.

[noexcept] QEasingCurve::QEasingCurve(QEasingCurve &&other)

Move-konstruiert eine QEasingCurve-Instanz, die auf das gleiche Objekt zeigt, auf das other gezeigt hat.

[noexcept] QEasingCurve::~QEasingCurve()

Zerstörer.

void QEasingCurve::addCubicBezierSegment(const QPointF &c1, const QPointF &c2, const QPointF &endPoint)

Fügt ein Segment eines kubischen Bezier-Splines hinzu, um eine benutzerdefinierte Entspannungskurve zu definieren. Sie ist nur anwendbar, wenn type() QEasingCurve::BezierSpline ist. Beachten Sie, dass der Spline implizit bei (0.0, 0.0) beginnt und bei (1.0, 1.0) enden muss, um eine gültige Lockerungskurve zu sein. c1 und c2 sind die Kontrollpunkte, die zum Zeichnen der Kurve verwendet werden. endPoint ist der Endpunkt der Kurve.

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

Fügt ein Segment eines TCB-Bezier-Splines hinzu, um eine benutzerdefinierte Entspannungskurve zu definieren. Sie ist nur anwendbar, wenn type() QEasingCurve::TCBSpline ist. Der Spline muss explizit bei (0.0, 0.0) beginnen und bei (1.0, 1.0) enden, um eine gültige Lockerungskurve zu sein. Die Spannung t ändert die Länge des Tangentenvektors. Die Kontinuität c ändert die Schärfe des Wechsels zwischen den Tangenten. Die Vorspannung b ändert die Richtung des Tangentenvektors. nextPoint ist die Probenposition. Alle drei Parameter sind zwischen -1 und 1 gültig und definieren die Tangente des Kontrollpunktes. Wenn alle drei Parameter 0 sind, ist der resultierende Spline ein Catmull-Rom-Spline. Anfangs- und Endpunkt haben immer einen Bias von -1 und 1, da die Außentangente nicht definiert ist.

qreal QEasingCurve::amplitude() const

Gibt die Amplitude zurück. Dies ist nicht für alle Kurventypen möglich. Sie ist nur für federnde und elastische Kurven anwendbar (Kurven von type() QEasingCurve::InBounce, QEasingCurve::OutBounce, QEasingCurve::InOutBounce, QEasingCurve::OutInBounce, QEasingCurve::InElastic, QEasingCurve::OutElastic, QEasingCurve::InOutElastic oder QEasingCurve::OutInElastic).

Siehe auch setAmplitude().

QEasingCurve::EasingFunction QEasingCurve::customType() const

Gibt den Funktionszeiger auf die benutzerdefinierte Entspannungskurve zurück. Wenn type() nicht QEasingCurve::Custom zurückgibt, gibt diese Funktion 0 zurück.

Siehe auch setCustomType().

qreal QEasingCurve::overshoot() const

Gibt den Überschwinger zurück. Dies ist nicht für alle Kurventypen möglich. Sie ist nur anwendbar, wenn type() QEasingCurve::InBack, QEasingCurve::OutBack, QEasingCurve::InOutBack oder QEasingCurve::OutInBack ist.

Siehe auch setOvershoot().

qreal QEasingCurve::period() const

Gibt die Periode zurück. Dies ist nicht für alle Kurventypen möglich. Sie ist nur anwendbar, wenn type() QEasingCurve::InElastic, QEasingCurve::OutElastic, QEasingCurve::InOutElastic oder QEasingCurve::OutInElastic ist.

Siehe auch setPeriod().

void QEasingCurve::setAmplitude(qreal amplitude)

Setzt die Amplitude auf amplitude.

Damit wird die Amplitude des Rückpralls oder die Amplitude des elastischen "Feder"-Effekts festgelegt. Je höher die Zahl, desto größer ist die Amplitude.

Siehe auch amplitude().

void QEasingCurve::setCustomType(QEasingCurve::EasingFunction func)

Setzt eine benutzerdefinierte Lockerungskurve, die vom Benutzer in der Funktion func definiert wird. Die Signatur der Funktion ist qreal myEasingFunction(qreal progress), wobei progress und der Rückgabewert als zwischen 0 und 1 normalisiert angesehen werden. (In einigen Fällen kann der Rückgabewert außerhalb dieses Bereichs liegen) Nach dem Aufruf dieser Funktion type() wird QEasingCurve::Custom zurückgegeben. func kann nicht Null sein.

Siehe auch customType() und valueForProgress().

void QEasingCurve::setOvershoot(qreal overshoot)

Stellt das Überschwingen auf overshoot ein.

0 erzeugt kein Überschwingen, und der Standardwert von 1,70158 erzeugt ein Überschwingen von 10 Prozent.

Siehe auch overshoot().

void QEasingCurve::setPeriod(qreal period)

Stellt die Periode auf period ein. Ein kleiner Periodenwert ergibt eine hohe Frequenz der Kurve. Eine große Periode ergibt eine kleine Frequenz.

Siehe auch period().

void QEasingCurve::setType(QEasingCurve::Type type)

Setzt den Typ der Entspannungskurve auf type.

Siehe auch type().

[noexcept] void QEasingCurve::swap(QEasingCurve &other)

Tauscht diese Kurve mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.

QList<QPointF> QEasingCurve::toCubicSpline() const

Gibt die cubicBezierSpline zurück, die eine benutzerdefinierte Entspannungskurve definiert. Wenn die Entspannungskurve keine benutzerdefinierte Bezier-Entspannungskurve hat, ist die Liste leer.

QEasingCurve::Type QEasingCurve::type() const

Gibt den Typ der Entspannungskurve zurück.

Siehe auch setType().

qreal QEasingCurve::valueForProgress(qreal progress) const

Gibt den effektiven Fortschritt für die Entspannungskurve auf progress zurück. Während progress zwischen 0 und 1 liegen muss, kann der zurückgegebene effektive Fortschritt außerhalb dieser Grenzen liegen. Zum Beispiel gibt QEasingCurve::InBack am Anfang der Funktion negative Werte zurück.

[noexcept] QEasingCurve &QEasingCurve::operator=(QEasingCurve &&other)

Verschieben - weist other dieser QEasingCurve Instanz zu.

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

Kopieren Sie other.

Verwandte Nicht-Mitglieder

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

Vergleicht die Entspannungskurve lhs mit rhs und gibt true zurück, wenn sie nicht gleich sind; andernfalls gibt es false zurück. Es werden auch die Eigenschaften der Kurven verglichen.

Siehe auch operator==().

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

Schreibt die angegebene easing Kurve in den angegebenen stream und gibt eine Referenz auf den Stream zurück.

Siehe auch Serialisierung von Qt-Datentypen.

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

Vergleicht die Entspannungskurve lhs mit rhs und gibt true zurück, wenn sie gleich sind; andernfalls gibt es false zurück. Es werden auch die Eigenschaften der Kurven verglichen.

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

Liest eine Lockerungskurve aus dem angegebenen stream in die angegebene easing Kurve und gibt eine Referenz auf den Stream zurück.

Siehe auch Serialisierung von Qt-Datentypen.

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