Spec-Zone.ru › Qt

Класс 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 { Forward, Backward }
перечисление State { Stopped, Paused, Running }

Свойства

  • currentLoop : int
  • currentTime : int
  • direction : Direction
  • duration : const int
  • loopCount : int
  • state : 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().

В любой момент анимация находится в одном из трех состояний: 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 и Фреймворк анимации.

Документация по типам членов

перечисление QAbstractAnimation::DeletionPolicy

Постоянная Значение Описание
QAbstractAnimation::KeepWhenStopped 0 Анимация не будет удалена при остановке.
QAbstractAnimation::DeleteWhenStopped 1 Анимация будет автоматически удалена при остановке.

перечисление QAbstractAnimation::Direction

Это перечисление описывает направление анимации в состоянии Running.

Постоянная Значение Описание
QAbstractAnimation::Forward 0 Текущее время анимации увеличивается со временем (т.е. перемещается от 0 к концу/длительности).
QAbstractAnimation::Backward 1 Текущее время анимации уменьшается со временем (т.е. перемещается от конца/длительности к 0).

См. также direction.

перечисление QAbstractAnimation::State

Это перечисление описывает состояние анимации.

Постоянная Значение Описание
QAbstractAnimation::Stopped 0 Анимация не выполняется. Это начальное состояние QAbstractAnimation, и состояние QAbstractAnimation возвращается в него при завершении. Текущее время остается неизменным до тех пор, пока не будет вызвано setCurrentTime() или анимация не будет запущена вызовом start().
QAbstractAnimation::Paused 1 Анимация приостановлена (т.е. временно приостановлена). Вызов resume() возобновит работу анимации.
QAbstractAnimation::Running 2 Анимация выполняется. Пока управление находится в цикле событий, QAbstractAnimation будет обновлять текущее время с регулярными интервалами, вызывая updateCurrentTime() по мере необходимости.

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

Документация по свойствам

[bindable read-only] currentLoop : int

Примечание: Это свойство поддерживает привязки QProperty.

Это свойство содержит текущую итерацию анимации.

Это свойство описывает текущую итерацию анимации. По умолчанию количество повторений анимации равно 1, поэтому текущая итерация всегда будет 0. Если количество повторений равно 2, и анимация выполнится дольше своей длительности, она автоматически перемотается и перезапустится со значением текущего времени 0 и текущей итерации 1 и так далее.

При изменении текущей итерации QAbstractAnimation генерирует сигнал currentLoopChanged().

[bindable] currentTime : int

Примечание: Это свойство поддерживает привязки QProperty.

Это свойство содержит текущее время и прогресс анимации.

Это свойство описывает текущее время анимации. Вы можете изменить текущее время, вызвав setCurrentTime, или вызвать start() и позволить анимации работать, автоматически устанавливая текущее время по мере ее выполнения.

Текущее время анимации начинается с 0 и заканчивается в totalDuration().

Примечание: Вы можете привязать другие свойства к currentTime, но это не рекомендуется. По мере выполнения анимации currentTime обновляется автоматически, что отменяет его привязки.

См. также loopCount и currentLoopTime().

[bindable] direction : Direction

Примечание: Это свойство поддерживает привязки QProperty.

Это свойство содержит направление анимации, когда она находится в состоянии Running.

Это направление указывает, перемещается ли время от 0 к длительности анимации или от значения длительности к 0 после вызова start().

По умолчанию это свойство установлено в Forward.

[read-only] duration : const int

Это свойство содержит длительность анимации.

Если длительность равна -1, это означает, что длительность не определена. В этом случае loopCount игнорируется.

Функции доступа:

виртуальный int duration() const = 0

[bindable] loopCount : int

Примечание: Это свойство поддерживает привязки QProperty.

Это свойство содержит количество повторений анимации.

Это свойство описывает количество повторений анимации как целое число. По умолчанию это значение равно 1, что указывает на то, что анимация должна выполняться только один раз, а затем остановиться. Изменив его, вы можете запустить анимацию несколько раз. При значении 0 анимация вообще не будет запущена, а при значении -1 анимация будет циклически повторяться бесконечно до ее остановки. Не поддерживается циклическое выполнение анимации с неопределенной длительностью. Она будет выполнена только один раз.

[bindable read-only] state : State

Примечание: Это свойство поддерживает привязки QProperty.

состояние анимации.

Это свойство описывает текущее состояние анимации. При изменении состояния анимации QAbstractAnimation генерирует сигнал stateChanged().

Примечание: Обновления состояния могут привести к обновлениям свойства currentTime, что, в свою очередь, может отменить его привязки. Поэтому будьте осторожны при установке привязок к свойству currentTime, если ожидается изменение состояния анимации.

Документация по функциям членов

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() и состояние().

[slot] void QAbstractAnimation::setPaused(bool paused)

Если paused имеет значение true, анимация приостанавливается. Если paused имеет значение false, анимация возобновляется.

См. также состояние(), pause() и resume().

[slot] void QAbstractAnimation::start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped)

Запускает анимацию. Аргумент policy указывает, следует ли удалять анимацию по завершении. При запуске анимации генерится сигнал stateChanged(), и состояние() возвращает Running. Когда управление достигает цикла событий, анимация выполняется самостоятельно, периодически вызывая updateCurrentTime() по мере прогресса анимации.

Если анимация в настоящее время остановлена или уже достигла конца, вызов start() перемотает анимацию и начнёт её заново с начала. Когда анимация достигает конца, она либо останавливается, либо, если уровень цикла больше 1, перематывается и продолжается с начала.

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

См. также stop() и состояние().

[signal] void QAbstractAnimation::stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

QAbstractAnimation генерирует этот сигнал всякий раз, когда состояние анимации меняется с oldState на newState. Этот сигнал генерируется после вызова виртуальной функции updateState().

Примечание: Сигнал-уведомление для свойства состояние.

См. также updateState().

[slot] void QAbstractAnimation::stop()

Останавливает анимацию. Когда анимация останавливается, генерируется сигнал stateChanged(), и состояние() возвращает Stopped. Текущее время не изменяется.

Если анимация останавливается сама по себе после достижения конца (т.е. currentLoopTime() == duration() и currentLoop() > loopCount() - 1), генерируется сигнал finished().

См. также start() и состояние().

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

Spec-Zone.ru

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