Spec-Zone.ru › Qt 5.15

Класс QTimeLine

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

Заголовок: #include <QTimeLine>
qmake: QT += core
С момента: Qt 4.2
Наследует: QObject

Этот класс был представлен в Qt 4.2.

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

Типы публичного доступа

Перечисление 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 перейдет в состояние Запущена и начнёт излучать frameChanged() через равные промежутки времени, заставляя значение связанного свойства вашего виджета расти от нижнего конца до верхнего предела диапазона кадров равномерно. Вы можете указать интервал обновления, вызвав setUpdateInterval(). После завершения QTimeLine переходит в состояние НеЗапущена и излучает 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(), которая напрямую устанавливает позицию времени на временной шкале. Хотя она наиболее полезна в состоянии НеЗапущена (например, подключенная к сигналу valueChanged() в QSlider), эту функцию можно вызывать в любое время.

Интерфейс кадров полезен для стандартных виджетов, но QTimeLine может использоваться для управления любым типом анимации. Сердцем QTimeLine является функция valueForTime(), которая генерирует значение между 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, и временная шкала возвращается в это состояние после завершения. Текущее время, кадр и значение остаются неизменными до тех пор, пока не будет вызван 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() переопределен, это значение игнорируется. Если оба easingCurve и curveShape установлены, последнее установленное свойство переопределяет предыдущее.

Это свойство было добавлено в Qt 4.6.

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

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

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

loopCount : int

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

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

По умолчанию это свойство содержит значение 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 миллисекунд.

[signal] void QTimeLine::finished()

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

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

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

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

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

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

[slot] void QTimeLine::stop()

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

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

[slot] void QTimeLine::toggleDirection()

Переключает направление шкалы времени. Если направление было Forward, оно становится Backward, и наоборот.

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

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

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

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

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

Spec-Zone.ru

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