Класс QGraphicsItemAnimation
Класс QGraphicsItemAnimation обеспечивает простую поддержку анимации для QGraphicsItem. Подробнее...
| Заголовок: | #include <QGraphicsItemAnimation> |
| qmake: | QT += widgets |
| С версии: | Qt 4.2 |
| Наследует: | QObject |
Этот класс устарел. Он предоставляется для обеспечения работы старого исходного кода. Настоятельно не рекомендуется использовать его в новом коде.
Этот класс был введен в Qt 4.2.
Открытые функции
| 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 и фреймворк Graphics View.
Документация по функциям-членам
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().
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-5.14/qgraphicsitemanimation.html