本页内容

Qt3DAnimation::QKeyframeAnimation Class

class Qt3DAnimation::QKeyframeAnimation

一个实现简单关键帧动画的类,用于QTransform 。更多内容...

标题: #include <qkeyframeanimation.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3danimation)
target_link_libraries(mytarget PRIVATE Qt6::3danimation)
qmake: QT += 3danimation
在 QML 中: KeyframeAnimation
继承自: Qt3DAnimation::QAbstractAnimation
状态: 技术预览

该类处于技术预览阶段,可能会有变动。

公共类型

enum RepeatMode { None, Constant, Repeat }

属性

公共函数

QKeyframeAnimation(QObject *parent = nullptr)
void addKeyframe(Qt3DCore::QTransform *keyframe)
QEasingCurve easing() const
Qt3DAnimation::QKeyframeAnimation::RepeatMode endMode() const
QList<float> framePositions() const
QList<Qt3DCore::QTransform *> keyframeList() const
void removeKeyframe(Qt3DCore::QTransform *keyframe)
void setKeyframes(const QList<Qt3DCore::QTransform *> &keyframes)
Qt3DAnimation::QKeyframeAnimation::RepeatMode startMode() const
Qt3DCore::QTransform *target() const
QString targetName() const

公共插槽

void setEasing(const QEasingCurve &easing)
void setEndMode(Qt3DAnimation::QKeyframeAnimation::RepeatMode mode)
void setFramePositions(const QList<float> &positions)
void setStartMode(Qt3DAnimation::QKeyframeAnimation::RepeatMode mode)
void setTarget(Qt3DCore::QTransform *target)
void setTargetName(const QString &name)

信号

void easingChanged(const QEasingCurve &easing)
void endModeChanged(Qt3DAnimation::QKeyframeAnimation::RepeatMode endMode)
void framePositionsChanged(const QList<float> &positions)
void startModeChanged(Qt3DAnimation::QKeyframeAnimation::RepeatMode startMode)
void targetChanged(Qt3DCore::QTransform *target)
void targetNameChanged(const QString &name)

详细说明

Qt3DAnimation::QKeyframeAnimation 类实现了简单的关键帧动画,可用于对QTransform 进行动画处理。 关键帧由多个定时 QTransforms 组成,这些 QTransforms 经过插值后应用于目标QTransform 。在关键帧之间使用QEasingCurve 来控制插值器。当 QKeyframeAnimation 设置的位置低于或高于关键帧位置中定义的值时,可以设置RepeatMode 。

成员类型文档

enum QKeyframeAnimation::RepeatMode

此枚举指定了如何处理关键帧值范围之外的位置值。

常量值描述
Qt3DAnimation::QKeyframeAnimation::None0动画不应用于目标变换。
Qt3DAnimation::QKeyframeAnimation::Constant1使用边缘关键帧值。
Qt3DAnimation::QKeyframeAnimation::Repeat2动画将重复播放。

属性文档

easing : QEasingCurve

保存插值器在关键帧之间的平滑曲线。

访问函数:

QEasingCurve easing() const
void setEasing(const QEasingCurve &easing)

通知信号:

void easingChanged(const QEasingCurve &easing)

endMode : RepeatMode

对大于上一帧位置的帧位置值保持重复模式。

访问函数:

Qt3DAnimation::QKeyframeAnimation::RepeatMode endMode() const
void setEndMode(Qt3DAnimation::QKeyframeAnimation::RepeatMode mode)

通知信号:

void endModeChanged(Qt3DAnimation::QKeyframeAnimation::RepeatMode endMode)

framePositions : QList<float>

存储关键帧的位置。列表中的每个位置都指定了索引相同的对应关键帧的位置。这些值必须按升序排列。值可以是正数或负数,且没有预定义的单位。

访问函数:

QList<float> framePositions() const
void setFramePositions(const QList<float> &positions)

通知信号:

void framePositionsChanged(const QList<float> &positions)

startMode : RepeatMode

用于锁定小于第一帧位置的帧位置值的重复模式。

访问函数:

Qt3DAnimation::QKeyframeAnimation::RepeatMode startMode() const
void setStartMode(Qt3DAnimation::QKeyframeAnimation::RepeatMode mode)

通知信号:

void startModeChanged(Qt3DAnimation::QKeyframeAnimation::RepeatMode startMode)

target : Qt3DCore::QTransform*

保存动画所应用的目标QTransform 。

访问函数:

Qt3DCore::QTransform *target() const
void setTarget(Qt3DCore::QTransform *target)

通知器信号:

void targetChanged(Qt3DCore::QTransform *target)

targetName : QString

存储目标变换的名称。这是一个便捷属性,便于将目标变换与关键帧动画进行匹配。该名称通常与目标变换的父实体名称相同,但并非必须如此。

访问函数:

QString targetName() const
void setTargetName(const QString &name)

通知器信号:

void targetNameChanged(const QString &name)

成员函数文档

[explicit] QKeyframeAnimation::QKeyframeAnimation(QObject *parent = nullptr)

使用parent 创建一个QKeyframeAnimation。

void QKeyframeAnimation::addKeyframe(Qt3DCore::QTransform *keyframe)

在动画结尾处添加新的keyframe 。QTransform 可以多次添加到动画中。

QList<Qt3DCore::QTransform *> QKeyframeAnimation::keyframeList() const

返回关键帧的列表。

void QKeyframeAnimation::removeKeyframe(Qt3DCore::QTransform *keyframe)

从动画中移除一个keyframe 。如果同一个QTransform 被多次设置为关键帧,则所有实例都会被移除。

void QKeyframeAnimation::setKeyframes(const QList<Qt3DCore::QTransform *> &keyframes)

设置动画的keyframes 。旧的关键帧将被清除。

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