Класс QAbstractAnimation
Класс QAbstractAnimation является базовым классом для всех анимаций. Подробнее...
| Заголовок: | #include <QAbstractAnimation> |
| qmake: | QT += core |
| С тех пор: | Qt 4.6 |
| Наследует: | QObject |
| Наследуется от: |
Этот класс был представлен в Qt 4.6.
Открытые типы
| перечисление | DeletionPolicy { KeepWhenStopped, DeleteWhenStopped } |
| перечисление | Direction { Forward, Backward } |
| перечисление | State { Stopped, Paused, Running } |
Свойства
|
Открытые функции
| QAbstractAnimation(QObject *parent = nullptr) | |
| virtual | ~QAbstractAnimation() |
| int | currentLoop() const |
| int | currentLoopTime() const |
| int | currentTime() const |
| QAbstractAnimation::Direction | direction() const |
| virtual int | duration() const = 0 |
| QAnimationGroup * | group() const |
| int | loopCount() const |
| void | setDirection(QAbstractAnimation::Direction direction) |
| void | setLoopCount(int loopCount) |
| QAbstractAnimation::State | state() const |
| int | totalDuration() const |
Открытые слоты
| void | pause() |
| void | resume() |
| void | setCurrentTime(int msecs) |
| void | setPaused(bool paused) |
| void | start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped) |
| void | stop() |
Сигналы
| void | currentLoopChanged(int currentLoop) |
| void | directionChanged(QAbstractAnimation::Direction newDirection) |
| void | finished() |
| void | stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) |
Защищённые функции
| virtual void | updateCurrentTime(int currentTime) = 0 |
| virtual void | updateDirection(QAbstractAnimation::Direction direction) |
| virtual void | updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) |
Переопределённые защищённые функции
| virtual bool | event(QEvent *event) override |
Подробное описание
Этот класс определяет функции, общие для всех анимаций. Наследуя этот класс, вы можете создавать пользовательские анимации, которые подключаются к остальной части системы анимации.
Прогресс анимации задаётся текущим временем (currentLoopTime()), которое измеряется в миллисекундах от начала анимации (0) до её конца (duration()). Значение обновляется автоматически во время работы анимации. Его также можно установить непосредственно с помощью setCurrentTime().
В любой момент анимация находится в одном из трёх состояний: Running, Stopped или Paused — как определено перечислением State. Текущее состояние можно изменить, вызвав start(), stop(), pause() или resume(). Анимация всегда сбрасывает своё текущее время при запуске. Если она приостановлена, она продолжит работу с тем же текущим временем при возобновлении. Когда анимация остановлена, её нельзя возобновить, но она сохранит своё текущее время (до следующего запуска). QAbstractAnimation будет излучать stateChanged() всякий раз, когда её состояние меняется.
Анимация может циклически повторяться любое количество раз, установив свойство loopCount. Когда текущее время анимации достигает её duration(), оно сбрасывается, и анимация продолжает работу. Значение loopCount, равное 1 (по умолчанию), означает, что анимация будет работать один раз. Обратите внимание, что значение duration, равное -1, означает, что анимация будет работать до остановки; текущее время будет увеличиваться неограниченно. Когда текущее время равно duration() и анимация находится в последнем цикле, состояние Stopped устанавливается, и излучается сигнал finished().
QAbstractAnimation предоставляет чисто виртуальные функции, используемые подклассами для отслеживания прогресса анимации: duration() и updateCurrentTime(). Функция duration() позволяет указать длительность анимации (как описано выше). Система анимации вызывает updateCurrentTime() при изменении текущего времени. Переопределив эту функцию, вы можете отслеживать прогресс анимации. Обратите внимание, что интервал между вызовами или количество вызовов этой функции не определены; обычно это будет 60 обновлений в секунду.
Переопределяя updateState(), вы можете отслеживать изменения состояния анимации, что особенно полезно для анимаций, не управляемых временем.
END_OF_DOCUMENT_MARKERСм. также QVariantAnimation, QPropertyAnimation, QAnimationGroup и Фреймворк анимации.
Документация типа членов
enum QAbstractAnimation::DeletionPolicy
| Постоянная | Значение | Описание |
|---|---|---|
QAbstractAnimation::KeepWhenStopped |
0 |
Анимация не будет удалена при остановке. |
QAbstractAnimation::DeleteWhenStopped |
1 |
Анимация будет автоматически удалена при остановке. |
enum QAbstractAnimation::Direction
Этот перечисление описывает направление анимации, когда она в состоянии Running.
| Постоянная | Значение | Описание |
|---|---|---|
QAbstractAnimation::Forward |
0 |
Текущее время анимации увеличивается со временем (т.е. перемещается от 0 к концу/длительности). |
QAbstractAnimation::Backward |
1 |
Текущее время анимации уменьшается со временем (т.е. перемещается от конца/длительности к 0). |
См. также direction.
enum QAbstractAnimation::State
Этот перечисление описывает состояние анимации.
| Постоянная | Значение | Описание |
|---|---|---|
QAbstractAnimation::Stopped |
0 |
Анимация не выполняется. Это начальное состояние QAbstractAnimation, и состояние QAbstractAnimation возвращается в него при завершении. Текущее время остается неизменным до тех пор, пока не будет вызван setCurrentTime(), или анимация не будет запущена вызовом start(). |
QAbstractAnimation::Paused |
1 |
Анимация приостановлена (т.е. временно приостановлена). Вызов resume() возобновит активность анимации. |
QAbstractAnimation::Running |
2 |
Анимация выполняется. Пока управление находится в цикле событий, QAbstractAnimation будет обновлять текущее время с регулярными интервалами, вызывая updateCurrentTime() при необходимости. |
См. также state() и stateChanged().
Документация свойств
currentLoop : const int
Это свойство содержит текущую итерацию анимации.
Это свойство описывает текущую итерацию анимации. По умолчанию количество итераций анимации равно 1, поэтому текущая итерация всегда будет 0. Если количество итераций равно 2, и анимация проходит за пределы своей длительности, она автоматически перематывается и перезапускается с текущим временем 0 и текущей итерацией 1 и так далее.
Когда текущая итерация изменяется, QAbstractAnimation генерирует сигнал currentLoopChanged().
Функции доступа:
| int | currentLoop() const |
Сигнал уведомления:
| void | currentLoopChanged(int currentLoop) |
currentTime : int
Это свойство содержит текущее время и прогресс анимации.
Это свойство описывает текущее время анимации. Вы можете изменить текущее время, вызвав setCurrentTime, или вызвать start(), и позволить анимации выполняться, автоматически устанавливая текущее время по мере её прогресса.
Текущее время анимации начинается с 0 и заканчивается в totalDuration().
Функции доступа:
| int | currentTime() const |
| void | setCurrentTime(int msecs) |
См. также loopCount и currentLoopTime().
direction : Direction
Это свойство содержит направление анимации, когда она в состоянии Running.
Это направление указывает, движется ли время от 0 к длительности анимации или от значения длительности к 0 после того, как был вызван start().
По умолчанию это свойство установлено в Forward.
Функции доступа:
| QAbstractAnimation::Direction | direction() const |
| void | setDirection(QAbstractAnimation::Direction direction) |
Сигнал уведомления:
| void | directionChanged(QAbstractAnimation::Direction newDirection) |
duration : const int
Это свойство содержит длительность анимации.
Если длительность равна -1, это означает, что длительность не определена. В этом случае loopCount игнорируется.
Функции доступа:
| virtual int | duration() const = 0 |
loopCount : int
Это свойство содержит количество итераций анимации.
Это свойство описывает количество итераций анимации как целое число. По умолчанию это значение равно 1, что указывает на то, что анимация должна выполняться один раз, а затем остановиться. Изменив его, вы можете запустить анимацию несколько раз. Значение 0 означает, что анимация вообще не будет запущена, а значение -1 означает, что анимация будет повторяться бесконечно до остановки. В анимации с неопределенной длительностью повторение не поддерживается. Она выполнится только один раз.
Функции доступа:
| int | loopCount() const |
| void | setLoopCount(int loopCount) |
state : const State
состояние анимации.
Это свойство описывает текущее состояние анимации. При изменении состояния анимации QAbstractAnimation генерирует сигнал stateChanged().
Функции доступа:
| QAbstractAnimation::State | state() const |
Сигнал уведомления:
| void | stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) |
Документация функций членов
QAbstractAnimation::QAbstractAnimation(QObject *parent = nullptr)
Конструктор базового класса QAbstractAnimation, и передаёт parent в конструктор QObject.
См. также QVariantAnimation и QAnimationGroup.
[signal] void QAbstractAnimation::currentLoopChanged(int currentLoop)
QAbstractAnimation генерирует этот сигнал всякий раз, когда текущая итерация изменяется. currentLoop - текущая итерация.
Примечание: Сигнал уведомления для свойства currentLoop.
См. также currentLoop() и loopCount().
[signal] void QAbstractAnimation::directionChanged(QAbstractAnimation::Direction newDirection)
QAbstractAnimation генерирует этот сигнал всякий раз, когда направление было изменено. newDirection - новое направление.
Примечание: Сигнал уведомления для свойства direction.
См. также direction.
[signal] void QAbstractAnimation::finished()
QAbstractAnimation испускает этот сигнал после остановки анимации и достижения ею конца.
Этот сигнал испускается после stateChanged().
См. также stateChanged().
[slot] void QAbstractAnimation::pause()
Приостанавливает анимацию. Когда анимация приостановлена, state() возвращает Paused. Значение currentTime останется неизменным до вызова resume() или start(). Если вы хотите продолжить с текущего времени, вызовите resume().
См. также start(), state() и resume().
[slot] void QAbstractAnimation::resume()
Возобновляет анимацию после её приостановки. Когда анимация возобновлена, она испускает сигналы resumed() и stateChanged(). Текущее время не изменяется.
См. также start(), pause() и state().
[slot] void QAbstractAnimation::setPaused(bool paused)
Если paused равно true, анимация приостанавливается. Если paused равно false, анимация возобновляется.
См. также state(), pause() и resume().
[slot] void QAbstractAnimation::start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped)
Запускает анимацию. Аргумент policy определяет, будет ли анимация удалена по завершении. При запуске анимации испускается сигнал stateChanged(), и state() возвращает Running. Когда управление достигает цикла событий, анимация выполняется самостоятельно, периодически вызывая updateCurrentTime() по мере её выполнения.
Если анимация в данный момент остановлена или уже достигла конца, вызов start() перемотает анимацию и начнёт её с начала. Когда анимация достигнет конца, она либо остановится, либо, если уровень цикла больше 1, перемотается и продолжится с начала.
Если анимация уже запущена, эта функция ничего не делает.
[signal] void QAbstractAnimation::stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
QAbstractAnimation испускает этот сигнал всякий раз, когда состояние анимации изменяется с oldState на newState. Этот сигнал испускается после вызова виртуальной функции updateState().
Примечание: Сигнал-уведомление для свойства state.
См. также updateState().
[slot] void QAbstractAnimation::stop()
Останавливает анимацию. При остановке анимации испускается сигнал stateChanged(), и state() возвращает Stopped. Текущее время не изменяется.
Если анимация останавливается сама по себе после достижения конца (т. е., currentLoopTime() == duration() и currentLoop() > loopCount() - 1), испускается сигнал finished().
[virtual] QAbstractAnimation::~QAbstractAnimation()
Останавливает анимацию, если она запущена, а затем уничтожает QAbstractAnimation. Если анимация является частью QAnimationGroup, она автоматически удаляется перед уничтожением.
int QAbstractAnimation::currentLoopTime() const
Возвращает текущее время внутри текущего цикла. Оно может изменяться от 0 до duration().
См. также duration() и currentTime.
[pure virtual] int QAbstractAnimation::duration() const
Эта чисто виртуальная функция возвращает длительность анимации и определяет, как долго QAbstractAnimation должен обновлять текущее время. Эта продолжительность локальна и не включает счётчик циклов.
Возвращаемое значение -1 указывает, что анимация не имеет определённой продолжительности; анимация должна работать вечно до остановки. Это полезно для анимаций, которые не управляются временем, или где невозможно легко предсказать её продолжительность (например, воспроизведение аудио в игре, управляемое событиями).
Если анимация является параллельной QAnimationGroup, длительность будет максимальной продолжительностью всех её анимаций. Если анимация является последовательной QAnimationGroup, продолжительность будет суммой продолжительности всех её анимаций.
Примечание: Функция-получатель для свойства duration.
См. также loopCount.
[override virtual protected] bool QAbstractAnimation::event(QEvent *event)
Переопределяет: QObject::event(QEvent *e).
QAnimationGroup *QAbstractAnimation::group() const
Если эта анимация является частью QAnimationGroup, эта функция возвращает указатель на группу; в противном случае возвращает nullptr.
См. также QAnimationGroup::addAnimation().
int QAbstractAnimation::totalDuration() const
Возвращает общую и эффективную длительность анимации, включая счётчик циклов.
См. также duration() и currentTime.
[pure virtual protected] void QAbstractAnimation::updateCurrentTime(int currentTime)
Эта чисто виртуальная функция вызывается каждый раз, когда изменяется currentTime анимации.
См. также updateState().
[virtual protected] void QAbstractAnimation::updateDirection(QAbstractAnimation::Direction direction)
Эта виртуальная функция вызывается QAbstractAnimation, когда изменяется направление анимации. Аргумент direction — это новое направление.
См. также setDirection() и direction().
[virtual protected] void QAbstractAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
Эта виртуальная функция вызывается QAbstractAnimation, когда состояние анимации изменяется с oldState на newState.
См. также start(), stop(), pause() и resume().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qabstractanimation.html