QGraphicsItemAnimation 类

The QGraphicsItemAnimation class provides simple animation support for QGraphicsItem. 更多...

头文件 #include <QGraphicsItemAnimation>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承 QObject
状态已弃用

This class is deprecated. We strongly advise against using it in new code.

公共函数

QGraphicsItemAnimation(QObject *parent = nullptr)
virtual~QGraphicsItemAnimation()
voidclear()
qrealhorizontalScaleAt(qreal step) const
qrealhorizontalShearAt(qreal step) const
QGraphicsItem *item() const
QPointFposAt(qreal step) const
QList<QPair<qreal, QPointF>>posList() const
qrealrotationAt(qreal step) const
QList<QPair<qreal, qreal>>rotationList() const
QList<QPair<qreal, QPointF>>scaleList() const
voidsetItem(QGraphicsItem *item)
voidsetPosAt(qreal step, const QPointF &point)
voidsetRotationAt(qreal step, qreal angle)
voidsetScaleAt(qreal step, qreal sx, qreal sy)
voidsetShearAt(qreal step, qreal sh, qreal sv)
voidsetTimeLine(QTimeLine *timeLine)
voidsetTranslationAt(qreal step, qreal dx, qreal dy)
QList<QPair<qreal, QPointF>>shearList() const
QTimeLine *timeLine() const
QTransformtransformAt(qreal step) const
QList<QPair<qreal, QPointF>>translationList() const
qrealverticalScaleAt(qreal step) const
qrealverticalShearAt(qreal step) const
qrealxTranslationAt(qreal step) const
qrealyTranslationAt(qreal step) const

公共槽函数

voidsetStep(qreal step)

受保护函数

virtual voidafterAnimationStep(qreal step)
virtual voidbeforeAnimationStep(qreal step)

详细说明

QGraphicsItemAnimation 类用于动画一个 QGraphicsItem。您可以在指定的步骤中对项的变换矩阵进行更改。QGraphicsItemAnimation 类有一个当前步值。当这个值改变时,在该步设置的变换将执行。动画的当前步通过setStep() 函数设置。

QGraphicsItemAnimation 将在最近的两个预定更改之间进行简单的线性插值来计算矩阵。例如,如果您设定一个物品的位置在 0.0 和 1.0,则动画将显示物品在这些位置之间沿直线移动。缩放和旋转也是如此。

通常与 QTimeLine 一起使用本类。然后,将时间线的valueChanged() 信号连接到 setStep() everybody。例如,您可以通过对不同的步值调用 setRotationAt() 来设置一个物品的旋转。动画的时间表通过 setTimeLine() 函数设置。

以下是一个带有时间表的动画示例

    QGraphicsItem *ball = new QGraphicsEllipseItem(0, 0, 20, 20);

    QTimeLine *timer = new QTimeLine(5000);
    timer->setFrameRange(0, 100);

    QGraphicsItemAnimation *animation = new QGraphicsItemAnimation;
    animation->setItem(ball);
    animation->setTimeLine(timer);

    for (int i = 0; i < 200; ++i)
        animation->setPosAt(i / 200.0, QPointF(i, i));

    QGraphicsScene *scene = new QGraphicsScene;
    scene->setSceneRect(0, 0, 250, 250);
    scene->addItem(ball);

    QGraphicsView *view = new QGraphicsView(scene);
    view->show();

    timer->start();

请注意,步骤位于 0.0 和 1.0 之间。可能需要使用 setUpdateInterval()。默认更新间隔为 40 毫秒。已设置的预定变换在设置时无法删除,因此不建议在相同的步骤中安排同种类型的多个变换(例如旋转)。

另请参阅QTimeLine图形视图框架

成员函数文档

QGraphicsItemAnimation::QGraphicsItemAnimation(QObject *parent = nullptr)

使用给定的 parent 构造一个动画对象。

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

销毁动画对象。

[虚拟受保护] void QGraphicsItemAnimation::afterAnimationStep(qreal step)

此方法意在由需要执行附加代码的子类覆盖。动画 step 提供用于操作依赖于其值的场合。

[虚拟受保护] void QGraphicsItemAnimation::beforeAnimationStep(qreal step)

此方法意在由子类覆盖,需要在特定步骤之前执行附加代码。动画 step 提供用于操作依赖于其值的场合。

void QGraphicsItemAnimation::clear()

清除用于动画的预定变换,但保留项目和时间段。

qreal QGraphicsItemAnimation::horizontalScaleAt(qreal step) const

返回指定 step 值的项目的水平缩放。

另请参阅setScaleAt().

qreal QGraphicsItemAnimation::horizontalShearAt(qreal step) const

返回指定步长值下项的水平剪切。

另请参阅 setShearAt().

QGraphicsItem *QGraphicsItemAnimation::item() const

返回操作动画对象的项。

另请参阅 setItem().

QPointF QGraphicsItemAnimation::posAt(qreal step) const

返回给定步长值下项的位置。

另请参阅 setPosAt().

QList<QPair<qreal, QPointF>> QGraphicsItemAnimation::posList() const

返回所有显式插入的位置。

另请参阅 posAt() 和 setPosAt().

qreal QGraphicsItemAnimation::rotationAt(qreal step) const

返回项在指定步长值下的旋转角度。

另请参阅 setRotationAt().

QList<QPair<qreal, qreal>> QGraphicsItemAnimation::rotationList() const

返回所有显式插入的旋转。

另请参阅 rotationAt() 和 setRotationAt().

QList<QPair<qreal, QPointF>> QGraphicsItemAnimation::scaleList() const

返回所有显式插入的缩放。

另请参阅 verticalScaleAt(),horizontalScaleAt() 和 setScaleAt().

void QGraphicsItemAnimation::setItem(QGraphicsItem *item)

将指定的 item 设置为动画中使用的项。

另请参阅 item().

void QGraphicsItemAnimation::setPosAt(qreal step, const QPointF &point)

将指定步长值下项的位置设置为指定的 point

另请参阅 posAt().

void QGraphicsItemAnimation::setRotationAt(qreal step, qreal angle)

将物品在指定的 step 值时的旋转设置为指定的 angle

另请参阅 rotationAt().

void QGraphicsItemAnimation::setScaleAt(qreal step, qreal sx, qreal sy)

使用横纵缩放因子 sxsy 设置指定 step 值的物品缩放。

另请参阅 verticalScaleAt() 和 horizontalScaleAt().

void QGraphicsItemAnimation::setShearAt(qreal step, qreal sh, qreal sv)

使用横纵剪切因子 shsv 设置指定 step 值的物品剪切。

另请参阅 verticalShearAt() 和 horizontalShearAt().

[slot] void QGraphicsItemAnimation::setStep(qreal step)

设置动画的当前 step 值,使得在此步计划执行的变换将被执行。

void QGraphicsItemAnimation::setTimeLine(QTimeLine *timeLine)

将控制动画速率的时间线对象设置为指定的 timeLine

另请参阅 timeLine().

void QGraphicsItemAnimation::setTranslationAt(qreal step, qreal dx, qreal dy)

使用由 dxdy 指定的水平和垂直坐标设置指定 step 值的物品平移。

另请参阅 xTranslationAt() 和 yTranslationAt().

QList<QPair<qreal, QPointF>> QGraphicsItemAnimation::shearList() const

返回所有明确插入的剪切变换。

另请参阅 verticalShearAt(),horizontalShearAt() 和 setShearAt().

QTimeLine *QGraphicsItemAnimation::timeLine() const

返回控制动画发生速度的时间线对象。

另请参阅 setTimeLine().

QTransform QGraphicsItemAnimation::transformAt(qreal step) const

返回指定 step 值的项所使用的转换。

QList<QPair<qreal, QPointF>> QGraphicsItemAnimation::translationList() const

返回所有显式插入的平移。

另请参阅 xTranslationAt(),yTranslationAt() 和 setTranslationAt()。

qreal QGraphicsItemAnimation::verticalScaleAt(qreal step) const

返回指定 step 值的项的垂直缩放。

另请参阅setScaleAt().

qreal QGraphicsItemAnimation::verticalShearAt(qreal step) const

返回指定 step 值的项的垂直倾斜。

另请参阅 setShearAt().

qreal QGraphicsItemAnimation::xTranslationAt(qreal step) const

返回指定 step 值的项的水平平移。

另请参阅 setTranslationAt()。

qreal QGraphicsItemAnimation::yTranslationAt(qreal step) const

返回指定 step 值的项的垂直平移。

另请参阅 setTranslationAt()。

© 2024 The Qt Company Ltd. 本文件中包含的文档贡献的版权归其各自的拥有者。本文件提供的文档是根据自由软件基金会发布的 GNU自由文档许可证版本1.3 的条款许可的。Qt 及相关的标志是 The Qt Company Ltd. 在芬兰和/或其他国家的商标。所有其他商标均为其各自所有者的财产。