QPropertyAnimation 类

QPropertyAnimation 类用于动画化 Qt 属性。 更多信息...

头文件 #include <QPropertyAnimation>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core
继承自 QVariantAnimation

属性

公有函数

QPropertyAnimation(QObject *parent = nullptr)
QPropertyAnimation(QObject *target, const QByteArray &propertyName, QObject *parent = nullptr)
virtual~QPropertyAnimation()
QBindable<QByteArray>bindablePropertyName()
QBindable<QObject *>bindableTargetObject()
QByteArraypropertyName() const
voidsetPropertyName(const QByteArray &propertyName)
voidsetTargetObject(QObject *target)
QObject *targetObject() const

重新实现了受保护的函数

virtual boolevent(QEvent *event) override
virtual voidupdateCurrentValue(const QVariant &value) override
virtual voidupdateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) override

详细说明

QPropertyAnimation 在 Qt 属性 上进行插值。由于属性值存储在 QVariant 中,该类继承自 QVariantAnimation,并支持与超类相同的 元类型 的动画。

声明属性的类必须是 QObject。为了使属性动画化变得可能,它必须提供一个设置器(这样 QPropertyAnimation 就可以设置属性值)。请注意,这使得许多 Qt 小部件可以进行动画化。让我们看看一个例子

#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();
}

注意:您也可以通过在开始动画时选择一个 删除策略 来控制动画的生命周期。

将属性名称和应该动画化的 QObject 实例传递给构造函数。然后您可以指定属性的起始和结束值。这个过程对您自己实现的类中的属性同样适用--只需使用 QVariantAnimation 确保您的 QVariant 类型受支持。

《QVariantAnimation》类描述详细介绍了如何设置动画。注意,如果没有设置起始值,该属性将从创建QPropertyAnimation实例时的值开始。

QPropertyAnimation在独立使用时非常出色。对于包含多个对象的复杂动画,提供了QAnimationGroup。一个动画组是一个可以包含其他动画的动画,并且可以管理其动画何时播放。可以参考QParallelAnimationGroup了解示例。

另请参阅QVariantAnimationQAnimationGroup以及动画框架

属性文档

[可绑定] propertyName : QByteArray

注意:此属性支持QProperty绑定。

此属性保存此动画的目标属性名。

此属性定义了此动画的目标属性名。属性名是动画操作所必需的。

[可绑定] targetObject : QObject*

注意:此属性支持QProperty绑定。

此属性保存此动画的目标QObject

此属性定义了此动画的目标QObject

成员函数文档

QPropertyAnimation::QPropertyAnimation(QObject *parent = nullptr)

构建QPropertyAnimation对象。parent传递给QObject构造函数。

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

构建QPropertyAnimation对象。parent传递给QObject构造函数。动画更改目标上的< задач translate="no">propertyName。默认持续时间为250毫秒。

另请参阅targetObjectpropertyName

[虚拟 noexcept] QPropertyAnimation::~QPropertyAnimation()

销毁QPropertyAnimation实例。

[覆盖虚拟受保护] bool QPropertyAnimation::event(QEvent *event)

重新实现:QVariantAnimation::event(QEvent *event)。

[覆盖虚拟受保护] void QPropertyAnimation::updateCurrentValue(const QVariant &value)

重新实现:QVariantAnimation::updateCurrentValue(const QVariant &value)。

此虚函数在每次当前值更改时由QVariantAnimation调用。value是新的、更新的值。它更新目标对象上该属性的当前值。

另请参阅currentValuecurrentTime

[重写虚拟受保护] void QPropertyAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

重实现: QVariantAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState).

如果动画状态从“已停止”变为“正在运行”时,startValue未定义,则使用当前属性值作为动画的初始值。

© 2024 The Qt Company Ltd. 本文档内的文档贡献是各自所有者的版权。本提供的文档是根据自由软件基金会发布的 GNU自由文档许可协议版本1.3 的条款许可的。Qt和相应徽标是芬兰和/或全球其他地区的The Qt Company Ltd.的商标。所有其他商标均为各自所有者的财产。