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 |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QEasingCurve ist Teil des Animation Frameworks.
Ö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) |
Verwandte Nicht-Mitglieder
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:
enum QEasingCurve::Type
Die Art der Entspannungskurve.
Konstante | Wert |
---|---|
QEasingCurve::Linear | 0 |
Entspannungskurve für eine lineare (t) Funktion: Die Geschwindigkeit ist konstant.
Konstant | Wert |
---|---|
QEasingCurve::InQuad | 1 |
Beschleunigungskurve für eine quadratische (t^2) Funktion: Beschleunigung von der Geschwindigkeit Null.
Konstant | Wert |
---|---|
QEasingCurve::OutQuad | 2 |
Abschwächungskurve für eine quadratische (t^2)-Funktion: Abbremsen bis zur Geschwindigkeit Null.
Konstant | Wert |
---|---|
QEasingCurve::InOutQuad | 3 |
Easing-Kurve für eine quadratische (t^2)-Funktion: Beschleunigung bis zur Hälfte, dann Abbremsen.
Konstant | Wert |
---|---|
QEasingCurve::OutInQuad | 4 |
Abschwächungskurve für eine quadratische (t^2)-Funktion: Verlangsamung bis zur Hälfte, dann Beschleunigung.
Konstante | Wert |
---|---|
QEasingCurve::InCubic | 5 |
Entspannungskurve für eine kubische (t^3) Funktion: Beschleunigung von der Geschwindigkeit Null.
Konstant | Wert |
---|---|
QEasingCurve::OutCubic | 6 |
Abschwächungskurve für eine kubische (t^3)-Funktion: Abbremsen auf die Geschwindigkeit Null.
Konstant | Wert |
---|---|
QEasingCurve::InOutCubic | 7 |
Easing-Kurve für eine kubische (t^3)-Funktion: Beschleunigung bis zur Hälfte, dann Abbremsen.
Konstant | Wert |
---|---|
QEasingCurve::OutInCubic | 8 |
Abschwächungskurve für eine kubische (t^3)-Funktion: Verlangsamung bis zur Hälfte, dann Beschleunigung.
Konstant | Wert |
---|---|
QEasingCurve::InQuart | 9 |
Abschwächungskurve für eine quartische (t^4) Funktion: Beschleunigung von der Geschwindigkeit Null.
Konstant | Wert |
---|---|
QEasingCurve::OutQuart | 10 |
Abschwächungskurve für eine quartische (t^4)-Funktion: Abbremsen auf Geschwindigkeit Null.
Konstant | Wert |
---|---|
QEasingCurve::InOutQuart | 11 |
Abklingende Kurve für eine quartische (t^4) Funktion: Beschleunigung bis zur Hälfte, dann Abbremsen.
Konstant | Wert |
---|---|
QEasingCurve::OutInQuart | 12 |
Abschwächungskurve für eine quartische (t^4) Funktion: Verlangsamung bis zur Hälfte, dann Beschleunigung.
Konstante | Wert |
---|---|
QEasingCurve::InQuint | 13 |
Abschwächungskurve für eine quintische (t^5) Abschwächung: Beschleunigung von der Geschwindigkeit Null.
Konstant | Wert |
---|---|
QEasingCurve::OutQuint | 14 |
Entspannungskurve für eine quintische (t^5) Funktion: Abbremsen auf die Geschwindigkeit Null.
Konstant | Wert |
---|---|
QEasingCurve::InOutQuint | 15 |
Abklingende Kurve für eine quintische (t^5) Funktion: Beschleunigung bis zur Hälfte, dann Abbremsen.
Konstant | Wert |
---|---|
QEasingCurve::OutInQuint | 16 |
Abschwächungskurve für eine quintische (t^5) Funktion: Verlangsamung bis zur Hälfte, dann Beschleunigung.
Konstante | Wert |
---|---|
QEasingCurve::InSine | 17 |
Entspannungskurve für eine Sinusfunktion (sin(t)): Beschleunigung von der Geschwindigkeit Null.
Konstant | Wert |
---|---|
QEasingCurve::OutSine | 18 |
Abschwächungskurve für eine Sinusfunktion (sin(t)): Abbremsen auf die Geschwindigkeit Null.
Konstant | Wert |
---|---|
QEasingCurve::InOutSine | 19 |
Easing-Kurve für eine Sinusfunktion (sin(t)): Beschleunigung bis zur Hälfte, dann Abbremsen.
Konstant | Wert |
---|---|
QEasingCurve::OutInSine | 20 |
Abschwächungskurve für eine Sinusfunktion (sin(t)): Verzögerung bis zur Hälfte, dann Beschleunigung.
Konstante | Wert |
---|---|
QEasingCurve::InExpo | 21 |
Entspannungskurve für eine Exponentialfunktion (2^t): Beschleunigung von der Geschwindigkeit Null.
Konstant | Wert |
---|---|
QEasingCurve::OutExpo | 22 |
Abschwächungskurve für eine Exponentialfunktion (2^t): Abbremsung bis zur Geschwindigkeit Null.
Konstant | Wert |
---|---|
QEasingCurve::InOutExpo | 23 |
Abklingende Kurve für eine Exponentialfunktion (2^t): Beschleunigung bis zur Hälfte, dann Abbremsen.
Konstant | Wert |
---|---|
QEasingCurve::OutInExpo | 24 |
Abschwächungskurve für eine Exponentialfunktion (2^t): Verlangsamung bis zur Hälfte, dann Beschleunigung.
Konstant | Wert |
---|---|
QEasingCurve::InCirc | 25 |
Entspannungskurve für eine Kreisfunktion (sqrt(1-t^2)): Beschleunigung von der Geschwindigkeit Null.
Konstant | Wert |
---|---|
QEasingCurve::OutCirc | 26 |
Abschwächungskurve für eine Kreisfunktion (sqrt(1-t^2)): Abbremsung auf die Geschwindigkeit Null.
Konstante | Wert |
---|---|
QEasingCurve::InOutCirc | 27 |
Abklingende Kurve für eine Kreisfunktion (sqrt(1-t^2)): Beschleunigung bis zur Hälfte, dann Abbremsen.
Konstante | Wert |
---|---|
QEasingCurve::OutInCirc | 28 |
Abschwächungskurve für eine Kreisfunktion (sqrt(1-t^2)): Verzögerung bis zur Hälfte, dann Beschleunigung.
Konstante | Wert |
---|---|
QEasingCurve::InElastic | 29 |
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.
Konstante | Wert |
---|---|
QEasingCurve::OutElastic | 30 |
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.
Konstante | Wert |
---|---|
QEasingCurve::InOutElastic | 31 |
Abklingende Kurve für eine elastische (exponentiell abklingende Sinusfunktion): Beschleunigung bis zur Hälfte, dann Abklingen.
Konstante | Wert |
---|---|
QEasingCurve::OutInElastic | 32 |
Abschwächungskurve für eine elastische (exponentiell abklingende Sinusfunktion): Verlangsamung bis zur Hälfte, dann Beschleunigung.
Konstante | Wert |
---|---|
QEasingCurve::InBack | 33 |
Entspannungskurve für eine rückläufige (überschießende kubische Funktion: (s+1)*t^3 - s*t^2): Beschleunigung von der Geschwindigkeit Null.
Konstante | Wert |
---|---|
QEasingCurve::OutBack | 34 |
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.
Konstante | Wert |
---|---|
QEasingCurve::InOutBack | 35 |
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.
Konstante | Wert |
---|---|
QEasingCurve::OutInBack | 36 |
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.
Konstante | Wert |
---|---|
QEasingCurve::InBounce | 37 |
Easing-Kurve für eine Bounce-Funktion (exponentiell abklingende parabolische Bounce-Funktion): Beschleunigung von Geschwindigkeit Null.
Konstante | Wert |
---|---|
QEasingCurve::OutBounce | 38 |
Easing-Kurve für eine Bounce-Funktion (exponentiell abklingende parabolische Bounce-Funktion): Abbremsen von der Geschwindigkeit Null.
Konstant | Wert |
---|---|
QEasingCurve::InOutBounce | 39 |
Easing-Kurve für eine Bounce-Funktion (exponentiell abklingende Parabelfunktion): Beschleunigung bis zur Hälfte, dann Abbremsen.
Konstante | Wert |
---|---|
QEasingCurve::OutInBounce | 40 |
Easing-Kurve für eine Bounce-Funktion (exponentiell abklingende Parabelfunktion): Verlangsamung bis zur Hälfte, dann Beschleunigung.
Konstante | Wert | Beschreibung |
---|---|---|
QEasingCurve::BezierSpline | 45 | Ermöglicht die Definition einer benutzerdefinierten Lockerungskurve unter Verwendung eines kubischen Bezier-Splines |
QEasingCurve::TCBSpline | 46 | Ermöglicht die Definition einer benutzerdefinierten Lockerungskurve unter Verwendung eines TCB-Splines |
QEasingCurve::Custom | 47 | Dieser 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.