Класс QAbstractAnimation
Класс QAbstractAnimation является базовым для всех анимаций. Подробнее...
| Заголовок: | #include <QAbstractAnimation> |
| qmake: | QT += core |
| С момента: | Qt 4.6 |
| Наследуется от: | QObject |
| Наследуется: |
Типы
| перечисление | DeletionPolicy { KeepWhenStopped, DeleteWhenStopped } |
| перечисление | Direction { Forward, Backward } |
| перечисление | State { Stopped, Paused, Running } |
Свойства
|
- 1 свойство унаследовано от QObject
Открытые функции
| 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 |
- 32 открытые функции унаследованы от QObject
Открытые слоты
| void | pause() |
| void | resume() |
| void | setCurrentTime(int msecs) |
| void | setPaused(bool paused) |
| void | start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped) |
| void | stop() |
- 1 открытый слот унаследован от QObject
Сигналы
| void | currentLoopChanged(int currentLoop) |
| void | directionChanged(QAbstractAnimation::Direction newDirection) |
| void | finished() |
| void | stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) |
- 2 сигнала унаследованы от QObject
Статические открытые члены
| const QMetaObject | staticMetaObject |
- 10 статических открытых членов унаследованы от QObject
Защищенные функции
| 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 |
- 9 защищенных функций унаследованы от QObject
Подробное описание
Класс QAbstractAnimation является базовым для всех анимаций.
Класс определяет функции, общие для всех анимаций. Наследуя этот класс, вы можете создавать пользовательские анимации, которые подключаются к остальной части системы анимации.
Прогресс анимации определяется текущим временем (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(), вы можете отслеживать изменения состояния анимации, что особенно полезно для анимаций, которые не управляются временем.
См. также 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.
[virtual] QAbstractAnimation::~QAbstractAnimation()
Останавливает анимацию, если она запущена, затем уничтожает QAbstractAnimation. Если анимация является частью QAnimationGroup, она автоматически удаляется перед уничтожением.
[signal] void QAbstractAnimation::currentLoopChanged(int currentLoop)
QAbstractAnimation испускает этот сигнал всякий раз, когда изменяется текущая итерация. currentLoop — текущая итерация.
Примечание: Сигнал-уведомление для свойства currentLoop.
См. также currentLoop() и loopCount().
int QAbstractAnimation::currentLoopTime() const
Возвращает текущее время внутри текущей итерации. Оно может изменяться от 0 до duration().
См. также duration() и currentTime.
[signal] void QAbstractAnimation::directionChanged(QAbstractAnimation::Direction newDirection)
QAbstractAnimation испускает этот сигнал всякий раз, когда изменяется направление. newDirection — новое направление.
Примечание: Сигнал-уведомление для свойства direction.
См. также direction.
[pure virtual] int QAbstractAnimation::duration() const
Эта чисто виртуальная функция возвращает продолжительность анимации и определяет, как долго QAbstractAnimation должен обновлять текущее время. Эта продолжительность локальная и не включает счетчик повторений.
Значение -1 указывает, что у анимации нет заданной продолжительности; анимация должна работать вечно до остановки. Это полезно для анимаций, которые не управляются по времени, или где нельзя легко предсказать её продолжительность (например, воспроизведение аудио в игре, управляемое событиями).
Если анимация является параллельным QAnimationGroup, продолжительность будет максимальной продолжительностью всех анимаций. Если анимация является последовательным QAnimationGroup, продолжительность будет суммой продолжительности всех анимаций.
Примечание: Функция-получатель для свойства duration.
См. также loopCount.
[override virtual protected] bool QAbstractAnimation::event(QEvent *event)
Переопределено из QObject::event().
[signal] void QAbstractAnimation::finished()
QAbstractAnimation испускает этот сигнал после того, как анимация остановилась и достигла конца.
Этот сигнал испускается после stateChanged().
См. также stateChanged().
QAnimationGroup *QAbstractAnimation::group() const
Если эта анимация является частью QAnimationGroup, эта функция возвращает указатель на группу; в противном случае возвращает nullptr.
См. также QAnimationGroup::addAnimation().
[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().
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.12/qabstractanimation.html