Auf dieser Seite

QPropertyAnimation Class

Die Klasse „QPropertyAnimation“ animiert Qt-Eigenschaften. Mehr...

Header: #include <QPropertyAnimation>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Erbt von: QVariantAnimation

Eigenschaften

Öffentliche Funktionen

QPropertyAnimation(QObject *parent = nullptr)
QPropertyAnimation(QObject *target, const QByteArray &propertyName, QObject *parent = nullptr)
virtual ~QPropertyAnimation()
QBindable<QByteArray> bindablePropertyName()
QBindable<QObject *> bindableTargetObject()
QByteArray propertyName() const
void setPropertyName(const QByteArray &propertyName)
void setTargetObject(QObject *target)
QObject *targetObject() const

Neu implementierte geschützte Funktionen

virtual bool event(QEvent *event) override
virtual void updateCurrentValue(const QVariant &value) override
virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) override

Ausführliche Beschreibung

QPropertyAnimation führt Interpolationen über Qt-Eigenschaften durch. Da Eigenschaftswerte in ` QVariant`-Objekten gespeichert werden, erbt die Klasse von ` QVariantAnimation` und unterstützt die Animation derselben ` meta types ` wie ihre Oberklasse.

Eine Klasse, die Eigenschaften deklariert, muss eine „ QObject “ sein. Damit eine Eigenschaft animiert werden kann, muss sie einen Setter bereitstellen (damit „QPropertyAnimation“ den Wert der Eigenschaft setzen kann). Beachten Sie, dass dadurch die Animation vieler Qt Widgets möglich ist. Sehen wir uns ein Beispiel an:

#include <QApplication>
#include <QPushButton>
#include <QPropertyAnimation>

class MyButtonWidget : public QWidget
{
public:
    MyButtonWidget(QWidget *parent = nullptr);
};

MyButtonWidget::MyButtonWidget(QWidget *parent) : QWidget(parent)
{
    QPushButton *button = new QPushButton(tr("Animated Button"), this);
    QPropertyAnimation *anim = new QPropertyAnimation(button, "pos", this);
    anim->setDuration(10000);
    anim->setStartValue(QPoint(0, 0));
    anim->setEndValue(QPoint(100, 250));
    anim->start();
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MyButtonWidget buttonAnimWidget;
    buttonAnimWidget.resize(QSize(800, 600));
    buttonAnimWidget.show();
    return a.exec();
}

Hinweis: Sie können die Laufzeit einer Animation auch steuern, indem Sie beim Starten der Animation eine ` delete policy ` auswählen.

Der Eigenschaftsname und die „ QObject “-Instanz der zu animierenden Eigenschaft werden an den Konstruktor übergeben. Anschließend können Sie den Start- und Endwert der Eigenschaft festlegen. Das Verfahren ist für Eigenschaften in selbst implementierten Klassen identisch – überprüfen Sie lediglich unter QVariantAnimation, ob Ihr „ QVariant “-Typ unterstützt wird.

In der Klassenbeschreibung von ` QVariantAnimation ` wird detailliert erklärt, wie die Animation eingerichtet wird. Beachten Sie jedoch, dass die Eigenschaft, wenn kein Startwert festgelegt ist, mit dem Wert beginnt, den sie zum Zeitpunkt der Erstellung der `QPropertyAnimation`-Instanz hatte.

QPropertyAnimation funktioniert für sich genommen hervorragend. Für komplexe Animationen, die beispielsweise mehrere Objekte enthalten, steht „ QAnimationGroup “ zur Verfügung. Eine Animationsgruppe ist eine Animation, die andere Animationen enthalten kann und die steuern kann, wann ihre Animationen abgespielt werden. Ein Beispiel finden Sie unter QParallelAnimationGroup.

Siehe auch „ QVariantAnimation “, „ QAnimationGroup “ und „Das Animations-Framework“.

Dokumentation zu den Eigenschaften

[bindable] propertyName : QByteArray

Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.

Diese Eigenschaft enthält den Namen der Ziel-Eigenschaft für diese Animation

Diese Eigenschaft definiert den Namen der Zieleigenschaft für diese Animation. Der Eigenschaftsname ist für die Funktion der Animation erforderlich.

Zugriffsfunktionen:

QByteArray propertyName() const
void setPropertyName(const QByteArray &propertyName)

[bindable] targetObject : QObject*

Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.

Diese Eigenschaft enthält die Ziel- QObject für diese Animation.

Diese Eigenschaft definiert den Ziel QObject für diese Animation.

Zugriffsfunktionen:

QObject *targetObject() const
void setTargetObject(QObject *target)

Dokumentation zu den Member-Funktionen

QPropertyAnimation::QPropertyAnimation(QObject *parent = nullptr)

Erstellen Sie ein `QPropertyAnimation`-Objekt. ` parent ` wird an den Konstruktor von ` QObject` übergeben.

QPropertyAnimation::QPropertyAnimation(QObject *target, const QByteArray &propertyName, QObject *parent = nullptr)

Erstellen Sie ein `QPropertyAnimation`-Objekt. ` parent ` wird an den Konstruktor von ` QObject` übergeben. Die Animation ändert die Eigenschaft ` propertyName ` von ` target`. Die Standarddauer beträgt 250 ms.

Siehe auch targetObject und propertyName.

[virtual noexcept] QPropertyAnimation::~QPropertyAnimation()

Löscht die Instanz „ QPropertyAnimation “.

[override virtual protected] bool QPropertyAnimation::event(QEvent *event)

Umsetzt: ` QVariantAnimation::event(QEvent *event)`.

[override virtual protected] void QPropertyAnimation::updateCurrentValue(const QVariant &value)

Umsetzt: ` QVariantAnimation::updateCurrentValue(const QVariant &value)`.

Diese virtuelle Funktion wird von ` QVariantAnimation ` aufgerufen, sobald sich der aktuelle Wert ändert. ` value ` ist der neue, aktualisierte Wert. Sie aktualisiert den aktuellen Wert der Eigenschaft des Zielobjekts, sofern die Animation nicht angehalten wurde.

Siehe auch currentValue und currentTime.

[override virtual protected] void QPropertyAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

Implementiert: ` QVariantAnimation::updateState` (QAbstractAnimation::State newState, QAbstractAnimation::State oldState).

Wenn die Funktion ` startValue ` nicht definiert ist, wenn sich der Zustand der Animation von „Stopped“ zu „Running“ ändert, wird der aktuelle Eigenschaftswert als Anfangswert für die Animation verwendet.

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