QGraphicsItemAnimation 类
The QGraphicsItemAnimation class provides simple animation support for QGraphicsItem. 更多...
头文件 | #include <QGraphicsItemAnimation> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake | QT += widgets |
继承 | QObject |
状态 | 已弃用 |
This class is deprecated. We strongly advise against using it in new code.
公共函数
QGraphicsItemAnimation(QObject *parent = nullptr) | |
virtual | ~QGraphicsItemAnimation() |
void | clear() |
qreal | horizontalScaleAt(qreal step) const |
qreal | horizontalShearAt(qreal step) const |
QGraphicsItem * | item() const |
QPointF | posAt(qreal step) const |
QList<QPair<qreal, QPointF>> | posList() const |
qreal | rotationAt(qreal step) const |
QList<QPair<qreal, qreal>> | rotationList() const |
QList<QPair<qreal, QPointF>> | scaleList() const |
void | setItem(QGraphicsItem *item) |
void | setPosAt(qreal step, const QPointF &point) |
void | setRotationAt(qreal step, qreal angle) |
void | setScaleAt(qreal step, qreal sx, qreal sy) |
void | setShearAt(qreal step, qreal sh, qreal sv) |
void | setTimeLine(QTimeLine *timeLine) |
void | setTranslationAt(qreal step, qreal dx, qreal dy) |
QList<QPair<qreal, QPointF>> | shearList() const |
QTimeLine * | timeLine() const |
QTransform | transformAt(qreal step) const |
QList<QPair<qreal, QPointF>> | translationList() const |
qreal | verticalScaleAt(qreal step) const |
qreal | verticalShearAt(qreal step) const |
qreal | xTranslationAt(qreal step) const |
qreal | yTranslationAt(qreal step) const |
公共槽函数
void | setStep(qreal step) |
受保护函数
virtual void | afterAnimationStep(qreal step) |
virtual void | beforeAnimationStep(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 毫秒。已设置的预定变换在设置时无法删除,因此不建议在相同的步骤中安排同种类型的多个变换(例如旋转)。
成员函数文档
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
返回所有显式插入的位置。
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)
使用横纵缩放因子 sx 和 sy 设置指定 step 值的物品缩放。
另请参阅 verticalScaleAt() 和 horizontalScaleAt().
void QGraphicsItemAnimation::setShearAt(qreal step, qreal sh, qreal sv)
使用横纵剪切因子 sh 和 sv 设置指定 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)
使用由 dx 和 dy 指定的水平和垂直坐标设置指定 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. 在芬兰和/或其他国家的商标。所有其他商标均为其各自所有者的财产。