QVariantAnimation 类
QVariantAnimation 类提供动画的基类。 更多...
头文件 | #include <QVariantAnimation> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
继承自 | QAbstractAnimation |
由以下类继承 |
- 包括所有成员,包括继承的成员列表
- QVariantAnimation 是 动画框架 的一部分。
公共类型
属性
|
|
公共函数
QVariantAnimation(QObject *parent = nullptr) | |
virtual | ~QVariantAnimation() |
QBindable<int> | bindableDuration() |
QBindable<QEasingCurve> | bindableEasingCurve() |
QVariant | currentValue() const |
QEasingCurve | easingCurve() const |
QVariant | endValue() const |
QVariant | keyValueAt(qreal step) const |
QVariantAnimation::KeyValues | keyValues() const |
void | setDuration(int msecs) |
void | setEasingCurve(const QEasingCurve &) |
void | setEndValue(const QVariant &value) |
void | setKeyValueAt(qreal step, const QVariant &value) |
void | setKeyValues(const QVariantAnimation::KeyValues &keyValues) |
void | setStartValue(const QVariant &value) |
QVariant | startValue() const |
重实现的公共函数
virtual int | duration() const override |
信号
void | valueChanged(const QVariant &value) |
受保护函数
virtual QVariant | interpolated(const QVariant &from, const QVariant &to, qreal progress) const |
virtual void | updateCurrentValue(const QVariant &value) |
重实现了保护函数
virtual bool | event(QEvent *event) override |
virtual void | updateCurrentTime(int) override |
virtual void | updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) override |
相关非成员
void | qRegisterAnimationInterpolator(QVariant (*)(const T &, const T &, qreal) func) |
详细描述
此类是动画框架的一部分。它作为属性和项目动画的基类,具有用于共享功能的功能。
该类在 QVariant 上执行插值,但留给子类使用插值值。目前,Qt 提供了 QPropertyAnimation,可以动画化 Qt 属性。如果您想动画化此类属性,请参阅 QPropertyAnimation 类描述。
然后,您可以通过调用 setStartValue() 和 setEndValue() 来设置属性的起始和结束值,最后调用 start() 来启动动画。QVariantAnimation 将在目标对象的属性上插值,并发出 valueChanged()。为了响应当前值的更改,您必须重写 updateCurrentValue() 虚拟函数或将该信号连接到。
您还可以在起始值和结束值之间设置特定步骤的值。然后,插值将在指定的步骤上触及这些点。请注意,起始值和结束值定义为0.0和1.0的关键值。
有两种方式可以影响 QVariantAnimation 插值值的方式。您可以通过调用 setEasingCurve() 来设置缓动曲线,并通过调用 setDuration() 来配置持续时间。您可以通过创建 QVariantAnimation 的子类并重写虚拟 interpolated() 函数来更改 QVariant 的插值方式。
如果您的 QVariant 您不希望声明为 Qt 属性,则可以使用float float 作为替代。请注意,在大多数情况下,将您的 QVariant 声明为属性会更好。
并非所有 QVariant 类型都受支持。以下是当前支持的 QVariant 类型列表
如果您需要插值其他变体类型,包括自定义类型,您必须自行实现插值。要做到这一点,您可以为特定类型注册一个插值器函数。此函数接受3个参数:起始值、结束值和当前进度。
示例
QVariant myColorInterpolator(const QColor &start, const QColor &end, qreal progress) { ... return QColor(...); } ... qRegisterAnimationInterpolator<QColor>(myColorInterpolator);
另一种选择是重写 interpolated(),它返回要插值的值的插值值。
另请参阅QPropertyAnimation、QAbstractAnimation 和 动画框架。
成员类型文档
[别名]
QVariantAnimation::KeyValue
这是 std::pair&qreal,QVariant> 的类型定义。
QVariantAnimation::KeyValues
这是 QList
属性文档
[只读]
currentValue : const QVariant
此属性保存动画的当前值。
此属性描述当前值;一个插值值,介于 起始值 和 结束值 之间,使用当前时间作为进度。值本身从 interpolated() 获得,该函数在动画运行期间被重复调用。
QVariantAnimation 在当前值更改时调用虚拟的 updateCurrentValue() 函数。这对于需要跟踪更新的子类特别有用。例如,QPropertyAnimation 使用此函数来动画化 Qt 属性。
访问函数
QVariant | currentValue() const |
通知信号
void | valueChanged(const QVariant &value) |
另请参阅startValue 和 endValue。
[可绑定]
duration : int
注意:此属性支持 QProperty 绑定。
此属性保存动画的持续时间
此属性描述动画的持续时间(以毫秒为单位)。默认持续时间为 250 毫秒。
另请参阅QAbstractAnimation::duration。
[可绑定]
easingCurve : QEasingCurve
注意:此属性支持 QProperty 绑定。
此属性保存动画的缓动曲线
此属性定义动画的缓动曲线。默认情况下,使用线性缓动曲线,实现线性插值。还提供其他曲线,例如,QEasingCurve::InCirc,提供圆形进入曲线。另一个示例是 QEasingCurve::InOutElastic,它为插值变量的值提供弹性效果。
QVariantAnimation 将使用 QEasingCurve::valueForProgress() 将动画的 "标准化进度"(currentTime / totalDuration)转换为动画实际使用的有效进度。这是在调用 interpolated() 时所用的进度。也是 keyValues 中的步骤所引用的进度。
缓动曲线与插值器一起使用,与 interpolated() 虚拟函数以及动画的持续时间一起,以控制当前值如何随着动画的进行而变化。
endValue: QVariant
此属性持有动画的结束值
该属性描述了动画的结束值。
访问函数
QVariant | endValue() const |
void | setEndValue(const QVariant &value) |
另请参阅 startValue.
startValue : QVariant
此属性持有动画的可选起始值
该属性描述了动画的可选起始值。如果省略,或如果将空的 QVariant 分配为起始值,动画将在动画启动时使用当前结束值的位置。
访问函数
QVariant | startValue() const |
void | setStartValue(const QVariant &value) |
另请参阅 endValue.
成员函数文档
QVariantAnimation::QVariantAnimation(QObject *parent = nullptr)
构建一个 QVariantAnimation 对象。 parent 被传递到 QAbstractAnimation 构造函数中。
[虚拟 noexcept]
QVariantAnimation::~QVariantAnimation()
销毁动画。
[重写虚拟受保护]
bool QVariantAnimation::event(QEvent *event)
重实现了:QAbstractAnimation::event(QEvent *event)。
[虚拟受保护]
QVariant QVariantAnimation::interpolated(const QVariant &from, const QVariant &to, qreal progress) const
此虚拟函数返回从 from 到 to 变异的线性插值,在 progress 处,通常是一个介于 0 和 1 之间的值。您可以在 QVariantAnimation 的子类中重写此函数以提供自己的插值算法。
请注意,为了使插值与返回小于 0 或大于 1 的值(例如 QEasingCurve::InBack)的 QEasingCurve 一起工作,您应确保它可以进行外推。如果该数据类型的语义不允许外推,则此函数应优雅地处理此情况。
如果您想使您的类处理 Qt 已支持的类型,请注意调用此函数的 QVariantAnimation 实现(有关支持类型的列表,请参阅 QVariantAnimation 类描述)。
另请参阅 QEasingCurve.
QVariant QVariantAnimation::keyValueAt(qreal step) const
返回给定 step 的关键帧值。所给的 step 必须在 0 到 1 的范围内。如果没有 KeyValue 为 step,则返回一个无效的 QVariant。
另请参阅 keyValues() 和 setKeyValueAt().
QVariantAnimation::KeyValues QVariantAnimation::keyValues() const
返回此动画的关键帧。
另请参阅keyValueAt() 和 setKeyValues()。
void QVariantAnimation::setKeyValueAt(qreal step, const QVariant &value)
在给定的 step 处创建一个具有给定 value 的关键帧。给定的 step 必须在 0 到 1 的范围内。
另请参阅setKeyValues() 和 keyValueAt()。
void QVariantAnimation::setKeyValues(const QVariantAnimation::KeyValues &keyValues)
用给定的 keyValues 替换当前的关键帧集。关键帧的步长必须在 0 到 1 的范围内。
另请参阅keyValues() 和 keyValueAt()。
[override virtual protected]
void QVariantAnimation::updateCurrentTime(int)
重新实现: QAbstractAnimation::updateCurrentTime(int currentTime)。
[virtual protected]
void QVariantAnimation::updateCurrentValue(const QVariant &value)
在动画的当前值每次更改时,都会调用此虚函数。参数 value 是新的当前值。
基类实现不执行任何操作。
另请参阅currentValue。
[override virtual protected]
void QVariantAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
重新实现: QAbstractAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)。
[signal]
void QVariantAnimation::valueChanged(const QVariant &value)
QVariantAnimation 每当当前值更改时发出此信号。
注意:属性 currentValue 的通知器信号。
另请参阅currentValue、startValue 和 endValue。
© 2024 The Qt Company Ltd. 本文档中包含的文档贡献均为各自所有者的版权。提供的文档根据自由软件基金会发布的条款,在 GNU自由文档许可协议版本1.3 下授权。Qt及其相关标志是芬兰及世界上其他地区的The Qt Company Ltd.的商标。所有其他商标均为各自所有者的财产。