Spec-Zone.ru › Qt

Класс QTimeLine

Класс QTimeLine предоставляет временную шкалу для управления анимациями. Подробнее...

Заголовок: #include <QTimeLine>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Наследуется от: QObject
  • Список всех членов, включая наследуемые

Типы

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

Свойства

  • currentTime : int
  • direction : Direction
  • duration : int
  • easingCurve : QEasingCurve
  • loopCount : int
  • updateInterval : int

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

QTimeLine(int duration = 1000, QObject *parent = nullptr)
virtual ~QTimeLine()
int currentFrame() const
int currentTime() const
qreal currentValue() const
QTimeLine::Direction direction() const
int duration() const
QEasingCurve easingCurve() const
int endFrame() const
int frameForTime(int msec) const
int loopCount() const
void setDirection(QTimeLine::Direction direction)
void setDuration(int duration)
void setEasingCurve(const QEasingCurve &curve)
void setEndFrame(int frame)
void setFrameRange(int startFrame, int endFrame)
void setLoopCount(int count)
void setStartFrame(int frame)
void setUpdateInterval(int interval)
int startFrame() const
QTimeLine::State state() const
int updateInterval() const
virtual qreal valueForTime(int msec) const

Открытые слоты

void resume()
void setCurrentTime(int msec)
void setPaused(bool paused)
void start()
void stop()
void toggleDirection()

Сигналы

void finished()
void frameChanged(int frame)
void stateChanged(QTimeLine::State newState)
void valueChanged(qreal value)

Переопределенные защищенные функции

virtual void timerEvent(QTimerEvent *event) override

Подробное описание

Чаще всего используется для анимации элемента графического интерфейса, вызывая слот периодически. Вы можете создать таймлайн, передав его длительность в миллисекундах в конструктор QTimeLine. Длительность таймлайна определяет, как долго будет выполняться анимация. Затем вы устанавливаете подходящий диапазон кадров, вызывая setFrameRange(). Наконец, подключите сигнал frameChanged() к подходящему слоту в виджете, который вы хотите анимировать (например, setValue() в QProgressBar). Когда вы вызовете start(), QTimeLine перейдет в состояние Running и начнет излучать frameChanged() с регулярными интервалами, заставляя значение подключенного свойства вашего виджета расти от нижней границы до верхней границы диапазона кадров с постоянной скоростью. Вы можете указать интервал обновления, вызвав setUpdateInterval(). По окончании QTimeLine переходит в состояние NotRunning и излучает finished().

Пример:

...
progressBar = new QProgressBar(this);
progressBar->setRange(0, 100);

// Construct a 1-second timeline with a frame range of 0 - 100
QTimeLine *timeLine = new QTimeLine(1000, this);
timeLine->setFrameRange(0, 100);
connect(timeLine, &QTimeLine::frameChanged, progressBar, &QProgressBar::setValue);

// Clicking the push button will start the progress bar animation
pushButton = new QPushButton(tr("Start animation"), this);
connect(pushButton, &QPushButton::clicked, timeLine, &QTimeLine::start);
...

По умолчанию таймлайн выполняется один раз, от начала до конца, после чего необходимо снова вызвать start() для перезапуска с начала. Чтобы зациклить таймлайн, можно вызвать setLoopCount(), передав количество раз, которое таймлайн должен выполняться перед завершением. Направление также можно изменить, заставив таймлайн выполняться в обратном направлении, вызвав setDirection(). Вы также можете приостановить и возобновить таймлайн во время его выполнения, вызвав setPaused(). Для интерактивного управления предоставляется функция setCurrentTime(), которая устанавливает позицию времени таймлайна напрямую. Хотя она наиболее полезна в состоянии NotRunning (например, подключена к сигналу valueChanged() в QSlider), эту функцию можно вызвать в любое время.

Интерфейс кадров полезен для стандартных виджетов, но QTimeLine можно использовать для управления любым типом анимации. Сердцевина QTimeLine заключается в функции valueForTime(), которая генерирует значение от 0 до 1 для заданного времени. Это значение обычно используется для описания этапов анимации, где 0 — первый этап анимации, а 1 — последний этап. Во время выполнения QTimeLine генерирует значения между 0 и 1, вызывая valueForTime() и излучая valueChanged(). По умолчанию valueForTime() применяет алгоритм интерполяции для генерации этих значений. Вы можете выбрать набор предопределенных алгоритмов таймлайна, вызвав setEasingCurve().

Обратите внимание, что по умолчанию QTimeLine использует QEasingCurve::InOutSine, которая обеспечивает значение, медленно увеличивающееся, затем увеличивающееся равномерно и, наконец, медленно увеличивающееся. Для пользовательской временной шкалы вы можете переопределить valueForTime(), в этом случае свойство easingCurve QTimeLine игнорируется.

См. также QProgressBar и QProgressDialog.

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

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

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

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

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

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

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

Константа Значение Описание
QTimeLine::NotRunning 0 Временная шкала не запущена. Это начальное состояние QTimeLine, и временная шкала возвращается в это состояние после завершения. Текущее время, кадр и значение остаются неизменными до тех пор, пока не будет вызван setCurrentTime() или временная шкала не будет запущена вызовом start().
QTimeLine::Paused 1 Временная шкала приостановлена (т.е. временно приостановлена). Вызов setPaused(false) возобновит работу временной шкалы.
QTimeLine::Running 2 Временная шкала запущена. Пока управление находится в цикле событий, QTimeLine будет обновлять текущее время с регулярными интервалами, излучая valueChanged() и frameChanged(), когда это необходимо.

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

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

[bindable] currentTime : int

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

Это свойство содержит текущее время временной шкалы.

Когда QTimeLine находится в состоянии Running, это значение непрерывно обновляется как функция от длительности и направления временной шкалы. В противном случае это значение, которое было текущим, когда stop() был вызван в последний раз, или значение, заданное setCurrentTime().

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

По умолчанию это свойство содержит значение 0.

[bindable] direction : Direction

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

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

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

Любая привязка к направлению будет удалена не только setDirection(), но и toggleDirection().

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

[bindable] duration : int

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

Это свойство содержит общую длительность временной шкалы в миллисекундах.

По умолчанию это значение равно 1000 (т.е. 1 секунда), но вы можете изменить его, передав длительность в конструктор QTimeLine или вызвав setDuration(). Длительность должна быть больше 0.

Примечание: Изменение длительности не приводит к сбросу текущего времени до нуля или к новой длительности. Вам также необходимо вызвать setCurrentTime() с желаемым значением.

[bindable] easingCurve : QEasingCurve

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

Указывает кривую плавного изменения, которую будет использовать временная шкала. Если valueForTime() переопределен, это значение игнорируется.

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

[bindable] loopCount : int

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

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

Значение 0 для loopCount означает, что временная шкала будет циклически повторяться бесконечно.

По умолчанию это свойство содержит значение 1.

[bindable] updateInterval : int

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

Это свойство содержит время в миллисекундах между каждым обновлением текущего времени QTimeLine.

При обновлении текущего времени QTimeLine излучит valueChanged(), если текущее значение изменилось, и frameChanged(), если изменился кадр.

По умолчанию интервал составляет 40 мс, что соответствует частоте 25 обновлений в секунду.

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

QTimeLine::QTimeLine(int duration = 1000, QObject *parent = nullptr)

Создаёт временную шкалу с длительностью duration миллисекунд. parent передаётся в конструктор QObject. По умолчанию длительность составляет 1000 миллисекунд.

[private signal] void QTimeLine::finished()

Этот сигнал излучается, когда QTimeLine завершается (т.е. достигает конца своей временной шкалы) и не циклически повторяется.

Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может излучаться пользователем.

[private signal] void QTimeLine::frameChanged(int frame)

QTimeLine излучает этот сигнал с регулярными интервалами, когда находится в состоянии Running, но только если текущий кадр меняется. frame — текущий номер кадра.

Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может излучаться пользователем.

См. также QTimeLine::setFrameRange() и QTimeLine::updateInterval.

[slot] void QTimeLine::resume()

Возобновляет временную шкалу с текущего времени. QTimeLine переходит в состояние Running, и, как только оно входит в цикл событий, оно обновляет текущее время, кадр и значение с регулярными интервалами.

В отличие от start(), эта функция не перезапускает временную шкалу перед возобновлением.

См. также start(), updateInterval(), frameChanged() и valueChanged().

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

Если paused равно true, временная шкала приостанавливается, вызывая переход QTimeLine в состояние Paused. Обновления не будут сигнализироваться до тех пор, пока не будет вызван start() или setPaused(false). Если paused равно false, временная шкала возобновляется и продолжает работу с того места, где она остановилась.

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

[slot] void QTimeLine::start()

Запускает временную шкалу. QTimeLine переходит в состояние Running, и, как только она входит в цикл событий, она обновляет текущее время, кадр и значение с регулярными интервалами. По умолчанию интервал составляет 40 мс (т.е. 25 раз в секунду). Вы можете изменить интервал обновления, вызвав setUpdateInterval().

Временная шкала начнется с позиции 0 или с конца, если направление обратное. Если вы хотите возобновить остановленную временную шкалу без перезапуска, вы можете вызвать resume() вместо этого.

См. также resume(), updateInterval(), frameChanged() и valueChanged().

[private signal] void QTimeLine::stateChanged(QTimeLine::State newState)

Этот сигнал излучается всякий раз, когда состояние QTimeLine меняется. Новое состояние равно newState.

Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может излучаться пользователем.

[slot] void QTimeLine::stop()

Останавливает временную шкалу, переведя QTimeLine в состояние NotRunning.

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

END_OF_DOCUMENT_MARKER

[slot] void QTimeLine::toggleDirection()

Переключает направление таймлайна. Если направление было Вперёд, оно становится Назад, и наоборот.

Существующие привязки свойства direction удаляются.

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

[private signal] void QTimeLine::valueChanged(qreal value)

QTimeLine испускает этот сигнал через равные промежутки времени, когда находится в состоянии Running, но только если текущее значение изменяется. value — текущее значение. value — число от 0.0 до 1.0

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

См. также QTimeLine::setDuration(), QTimeLine::valueForTime() и QTimeLine::updateInterval.

[virtual] QTimeLine::~QTimeLine()

Уничтожает таймлайн.

int QTimeLine::currentFrame() const

Возвращает кадр, соответствующий текущему времени.

См. также currentTime(), frameForTime() и setFrameRange().

qreal QTimeLine::currentValue() const

Возвращает значение, соответствующее текущему времени.

См. также valueForTime() и currentFrame().

int QTimeLine::endFrame() const

Возвращает конечный кадр, который соответствует концу таймлайна (т.е., кадру, для которого текущее значение равно 1).

См. также setEndFrame() и setFrameRange().

int QTimeLine::frameForTime(int msec) const

Возвращает кадр, соответствующий времени msec. Это значение вычисляется с помощью линейной интерполяции начального и конечного кадров, основанной на значении, возвращаемом valueForTime().

См. также valueForTime() и setFrameRange().

void QTimeLine::setEndFrame(int frame)

Устанавливает конечный кадр, который соответствует концу таймлайна (т.е., кадру, для которого текущее значение равно 1), в frame.

См. также endFrame(), startFrame() и setFrameRange().

void QTimeLine::setFrameRange(int startFrame, int endFrame)

Устанавливает счётчик кадров таймлайна, начиная с startFrame и заканчивая endFrame. Для каждого значения времени QTimeLine найдёт соответствующий кадр при вызове currentFrame() или frameForTime() путём интерполяции, используя возвращаемое значение valueForTime().

Когда находится в состоянии Running, QTimeLine также испускает сигнал frameChanged() при изменении кадра.

См. также startFrame(), endFrame(), start() и currentFrame().

void QTimeLine::setStartFrame(int frame)

Устанавливает начальный кадр, который соответствует началу таймлайна (т.е., кадру, для которого текущее значение равно 0), в frame.

См. также startFrame(), endFrame() и setFrameRange().

int QTimeLine::startFrame() const

Возвращает начальный кадр, который соответствует началу таймлайна (т.е., кадру, для которого текущее значение равно 0).

См. также setStartFrame() и setFrameRange().

QTimeLine::State QTimeLine::state() const

Возвращает состояние таймлайна.

См. также start(), setPaused() и stop().

[override virtual protected] void QTimeLine::timerEvent(QTimerEvent *event)

Переопределяет: QObject::timerEvent(QTimerEvent *event).

[virtual] qreal QTimeLine::valueForTime(int msec) const

Возвращает значение таймлайна для времени msec. Возвращаемое значение, зависящее от формы кривой, всегда находится в диапазоне от 0 до 1. Если msec равно 0, реализация по умолчанию всегда возвращает 0.

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

См. также easingCurve и frameForTime().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qtimeline.html

Spec-Zone.ru

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