Класс QGraphicsItemAnimation
Класс QGraphicsItemAnimation предоставляет простую поддержку анимации для QGraphicsItem. Подробнее...
| Заголовок: | #include <QGraphicsItemAnimation> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследуется от: | QObject |
Этот класс устарел. Он предоставляется для совместимости со старым кодом. Мы настоятельно рекомендуем не использовать его в новом коде.
Открытые функции
| 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(). Например, вы можете настроить элемент для поворота, вызвав 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.
[slot] void QGraphicsItemAnimation::setStep(qreal step)
Устанавливает текущее значение step для анимации, заставляя выполняться преобразования, запланированные на этом шаге.
[virtual] QGraphicsItemAnimation::~QGraphicsItemAnimation()
Уничтожает объект анимации.
[virtual protected] void QGraphicsItemAnimation::afterAnimationStep(qreal step)
Этот метод предназначен для переопределения в подклассах, которым требуется выполнить дополнительный код после того, как произошел новый шаг. Шаг анимации step предоставляется для использования в тех случаях, когда действие зависит от его значения.
[virtual protected] void QGraphicsItemAnimation::beforeAnimationStep(qreal step)
Этот метод предназначен для переопределения подклассами, которым требуется выполнить дополнительный код перед тем, как произойдет новый шаг. Шаг анимации step предоставляется для использования в тех случаях, когда действие зависит от его значения.
void QGraphicsItemAnimation::clear()
Очищает запланированные преобразования, используемые для анимации, но сохраняет элемент и таймлайн.
qreal QGraphicsItemAnimation::horizontalScaleAt(qreal step) const
Возвращает горизонтальный масштаб для элемента в заданном значении step.
См. также setScaleAt().
qreal QGraphicsItemAnimation::horizontalShearAt(qreal step) const
Возвращает горизонтальное сдвижение элемента по заданному значению step.
См. также setShearAt().
QGraphicsItem *QGraphicsItemAnimation::item() const
Возвращает элемент, к которому применяется объект анимации.
См. также setItem().
QPointF QGraphicsItemAnimation::posAt(qreal step) const
Возвращает позицию элемента по заданному значению step.
См. также setPosAt().
QList<QPair<qreal, QPointF> > QGraphicsItemAnimation::posList() const
Возвращает все явно вставленные позиции.
См. также posAt() и setPosAt().
qreal QGraphicsItemAnimation::rotationAt(qreal step) const
Возвращает угол поворота элемента по заданному значению step.
См. также 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)
Устанавливает позицию элемента по заданному значению step в указанную точку point.
См. также posAt().
void QGraphicsItemAnimation::setRotationAt(qreal step, qreal angle)
Устанавливает угол поворота элемента по заданному значению step на указанный угол angle.
См. также rotationAt().
void QGraphicsItemAnimation::setScaleAt(qreal step, qreal sx, qreal sy)
Устанавливает масштаб элемента по заданному значению step, используя горизонтальный и вертикальный коэффициенты масштабирования, заданные sx и sy.
См. также verticalScaleAt() и horizontalScaleAt().
void QGraphicsItemAnimation::setShearAt(qreal step, qreal sh, qreal sv)
Устанавливает сдвиг элемента по заданному значению step, используя горизонтальный и вертикальный коэффициенты сдвига, заданные sh и sv.
См. также verticalShearAt() и horizontalShearAt().
void QGraphicsItemAnimation::setTimeLine(QTimeLine *timeLine)
Устанавливает объект таймлайна, используемый для управления скоростью анимации, на указанный timeLine.
См. также timeLine().
void QGraphicsItemAnimation::setTranslationAt(qreal step, qreal dx, qreal dy)
Устанавливает смещение элемента по заданному значению step, используя горизонтальные и вертикальные координаты, заданные dx и dy.
См. также xTranslationAt() и yTranslationAt().
QList<QPair<qreal, QPointF> > QGraphicsItemAnimation::shearList() const
Возвращает все явно вставленные сдвиги.
См. также verticalShearAt(), horizontalShearAt() и setShearAt().
QTimeLine *QGraphicsItemAnimation::timeLine() const
Возвращает объект таймлайна, используемый для управления скоростью анимации.
См. также setTimeLine().
[since 5.14] QTransform QGraphicsItemAnimation::transformAt(qreal step) const
Возвращает преобразование, используемое для элемента по заданному значению step.
Эта функция была введена в Qt 5.14.
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().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qgraphicsitemanimation.html