Класс QAbstractAnimation
Класс QAbstractAnimation является базовым классом для всех анимаций. Подробнее...
| Заголовок: | #include <QAbstractAnimation> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Наследует: | QObject |
| Наследуется от: |
Общедоступные типы
| перечисление | 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().
Документация свойств
[read-only] 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) |
[read-only] duration : const int
Это свойство содержит длительность анимации.
Если длительность равна -1, это означает, что длительность не определена. В этом случае, loopCount игнорируется.
Функции доступа:
| virtual int | duration() const = 0 |
loopCount : int
Это свойство содержит количество циклов анимации.
Это свойство описывает количество повторений анимации как целое число. По умолчанию это значение равно 1, что указывает на то, что анимация должна выполняться один раз, а затем остановиться. Изменяя его, вы можете заставить анимацию циклически повторяться несколько раз. Значение 0 означает, что анимация вообще не будет запущена, а значение -1 означает, что анимация будет циклически повторяться вечно, пока не будет остановлена. Не поддерживается циклическое выполнение анимации с неопределенной длительностью. Она будет выполнена только один раз.
Функции доступа:
| int | loopCount() const |
| void | setLoopCount(int loopCount) |
[read-only] 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)
Эта чисто виртуальная функция вызывается каждый раз, когда изменяется текущее время анимации.
См. также 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-6.1/qabstractanimation.html