QPropertyAnimation 类
QPropertyAnimation 类用于动画化 Qt 属性。 更多信息...
头文件 | #include <QPropertyAnimation> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
继承自 | QVariantAnimation |
- 包含所有成员,包括继承成员
- QPropertyAnimation 是动画框架的一部分。动画框架。
属性
- propertyName : QByteArray
- targetObject : QObject*
公有函数
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 |
重新实现了受保护的函数
virtual bool | event(QEvent *event) override |
virtual void | updateCurrentValue(const QVariant &value) override |
virtual void | updateState(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了解示例。
另请参阅QVariantAnimation、QAnimationGroup以及动画框架。
属性文档
[可绑定]
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毫秒。
另请参阅targetObject和propertyName。
[虚拟 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是新的、更新的值。它更新目标对象上该属性的当前值。
另请参阅currentValue和currentTime。
[重写虚拟受保护]
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.的商标。所有其他商标均为各自所有者的财产。