QPropertyAnimation Class

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

Kopfzeile: #include <QPropertyAnimation>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Vererbt: 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

Reimplementierte 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

Detaillierte Beschreibung

QPropertyAnimation interpoliert über Qt-Eigenschaften. Da Eigenschaftswerte in QVariantgespeichert werden, erbt die Klasse QVariantAnimation und unterstützt die Animation der gleichen meta types wie ihre Superklasse.

Eine Klasse, die Eigenschaften deklariert, muss eine QObject sein. Um die Animation einer Eigenschaft zu ermöglichen, muss sie einen Setter bereitstellen (damit QPropertyAnimation den Wert der Eigenschaft setzen kann). Dies macht es möglich, viele der Qt Widgets zu animieren. Schauen 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 Lebensdauer einer Animation auch steuern, indem Sie beim Starten der Animation eine delete policy auswählen.

Der Eigenschaftsname und die QObject Instanz der Eigenschaft, die animiert werden soll, werden an den Konstruktor übergeben. Sie können dann den Start- und Endwert der Eigenschaft angeben. Das Verfahren ist für Eigenschaften in Klassen, die Sie selbst implementiert haben, gleich - überprüfen Sie einfach mit QVariantAnimation, ob Ihr QVariant Typ unterstützt wird.

In der Klassenbeschreibung QVariantAnimation wird die Einrichtung der Animation im Detail erläutert. Beachten Sie jedoch, dass die Eigenschaft mit dem Wert beginnt, den sie hatte, als die QPropertyAnimation-Instanz erstellt wurde, wenn kein Startwert festgelegt wurde.

QPropertyAnimation funktioniert von sich aus sehr gut. Für komplexe Animationen, die z. B. mehrere Objekte enthalten, wird QAnimationGroup bereitgestellt. Eine Animationsgruppe ist eine Animation, die andere Animationen enthalten kann, und die verwalten kann, wann ihre Animationen abgespielt werden. Siehe QParallelAnimationGroup für ein Beispiel.

Siehe auch QVariantAnimation, QAnimationGroup, und The Animation Framework.

Dokumentation der Eigenschaften

[bindable] propertyName : QByteArray

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

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

Mit dieser Eigenschaft wird der Name der Zieleigenschaft für diese Animation festgelegt. Der Eigenschaftsname ist erforderlich, damit die Animation funktioniert.

[bindable] targetObject : QObject*

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

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

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

Dokumentation der Mitgliederfunktionen

QPropertyAnimation::QPropertyAnimation(QObject *parent = nullptr)

Konstruiert ein QPropertyAnimation-Objekt. parent wird an den Konstruktor von QObject übergeben.

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

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

Siehe auch targetObject und propertyName.

[virtual noexcept] QPropertyAnimation::~QPropertyAnimation()

Zerstört die Instanz QPropertyAnimation.

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

Reimplements: QVariantAnimation::event(QEvent *Event).

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

Reimplements: QVariantAnimation::updateCurrentValue(const QVariant &value).

Diese virtuelle Funktion wird von QVariantAnimation aufgerufen, wenn sich der aktuelle Wert ändert. value ist der neue, aktualisierte Wert. Sie aktualisiert den aktuellen Wert der Eigenschaft auf dem Zielobjekt.

Siehe auch currentValue und currentTime.

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

Reimplements: QVariantAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState).

Wenn der startValue nicht definiert ist, wenn der Zustand der Animation von Stopped zu Running wechselt, wird der aktuelle Eigenschaftswert als Anfangswert für die Animation verwendet.

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