Spec-Zone.ru › Qt 6.0

Класс QAbstractAnimation

Класс QAbstractAnimation является базой для всех анимаций. Подробнее...

Заголовок: #include <QAbstractAnimation>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Наследует: QObject
Наследуется от:

QAnimationGroup, QPauseAnimation и QVariantAnimation

  • Список всех членов, включая унаследованные

Открытые типы

Перечисление DeletionPolicy { KeepWhenStopped, DeleteWhenStopped }
Перечисление Direction { Вперед, Назад }
Перечисление State { Остановлен, Приостановлен, Запущен }

Свойства

  • currentLoop : const int
  • currentTime : int
  • direction : Direction
  • duration : const int
  • loopCount : int
  • state : const State

Открытые функции

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().

В любой момент анимация находится в одном из трёх состояний: Запущен, Остановлен или Приостановлен — как определено в перечислении State. Текущее состояние можно изменить, вызвав start(), stop(), pause() или resume(). Анимация всегда сбрасывает текущее время при запуске. Если приостановлена, она продолжит с тем же текущим временем при возобновлении. Когда анимация остановлена, её нельзя возобновить, но она сохранит своё текущее время (пока не будет запущена снова). QAbstractAnimation будет излучать stateChanged() всякий раз, когда её состояние изменится.

Анимация может повторяться любое количество раз, установив свойство loopCount. Когда текущее время анимации достигает duration(), она сбрасывает текущее время и продолжает работать. Значение loopCount 1 (значение по умолчанию) означает, что анимация будет выполнена один раз. Обратите внимание, что duration -1 означает, что анимация будет выполняться до остановки; текущее время будет неограниченно увеличиваться. Когда текущее время равно duration() и анимация находится в последнем цикле, вводится состояние Остановлен, и излучается сигнал 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, и анимация возвращается в это состояние при завершении. Текущее время остаётся неизменным до тех пор, пока не будет вызван 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, перематывается и продолжается с начала.

Если анимация уже запущена, эта функция ничего не делает.

См. также stop() и state().

[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().

См. также start() и state().

[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-6.0/qabstractanimation.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API