Spec-Zone.ru › Qt 6.0

Класс 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(), которая генерирует значение value между 0 и 1 для заданного времени. Это значение обычно используется для описания шагов анимации, где 0 — первый шаг анимации, а 1 — последний. Во время выполнения QTimeLine генерирует значения между 0 и 1, вызывая valueForTime() и испуская valueChanged(). По умолчанию valueForTime() применяет алгоритм интерполяции для генерации этих значений. Вы можете выбрать один из набора предварительно определённых алгоритмов таймлайна, вызвав setEasingCurve().

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

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

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

enum QTimeLine::Direction

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

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

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

enum QTimeLine::State

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

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

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

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

currentTime : int

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

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

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

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

int currentTime() const
void setCurrentTime(int msec)

direction : Direction

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

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

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

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

QTimeLine::Direction direction() const
void setDirection(QTimeLine::Direction direction)

duration : int

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

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

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

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

int duration() const
void setDuration(int duration)

easingCurve : QEasingCurve

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

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

QEasingCurve easingCurve() const
void setEasingCurve(const QEasingCurve &curve)

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

loopCount : int

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

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

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

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

int loopCount() const
void setLoopCount(int count)

updateInterval : int

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

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

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

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

int updateInterval() const
void setUpdateInterval(int interval)

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

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 перейдёт в состояние Запущен, а после входа в цикл событий будет обновлять текущее время, кадр и значение с регулярными интервалами. По умолчанию интервал составляет 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().

[slot] void QTimeLine::toggleDirection()

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

См. также 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().

В состоянии Запущен 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.0/qtimeline.html

Spec-Zone.ru

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