Spec-Zone.ru › Qt 5.11

Класс QTimeLine

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

Заголовок: #include <QTimeLine>
qmake: QT += core
С момента: Qt 4.2
Наследует: QObject
  • Список всех членов, включая унаследованные

Типы

Перечисление CurveShape { EaseInCurve, EaseOutCurve, EaseInOutCurve, LinearCurve, SineCurve, CosineCurve }
Перечисление Direction { Вперед, Назад }
Перечисление State { НеЗапущено, Приостановлено, Запущено }

Свойства

  • currentTime : int
  • curveShape : CurveShape
  • direction : Direction
  • duration : int
  • easingCurve : QEasingCurve
  • loopCount : int
  • updateInterval : int
  • 1 свойство унаследовано от QObject

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

QTimeLine(int duration = 1000, QObject *parent = nullptr)
virtual ~QTimeLine()
int currentFrame() const
int currentTime() const
qreal currentValue() const
QTimeLine::CurveShape curveShape() const
QTimeLine::Direction direction() const
int duration() const
QEasingCurve easingCurve() const
int endFrame() const
int frameForTime(int msec) const
int loopCount() const
void setCurveShape(QTimeLine::CurveShape shape)
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
  • 32 открытых функции унаследованы от QObject

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

void resume()
void setCurrentTime(int msec)
void setPaused(bool paused)
void start()
void stop()
void toggleDirection()
  • 1 public slot inherited from QObject

Сигналы

void finished()
void frameChanged(int frame)
void stateChanged(QTimeLine::State newState)
void valueChanged(qreal value)
  • 2 signals inherited from QObject

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

virtual void timerEvent(QTimerEvent *event) override
  • 9 protected functions inherited from QObject

Дополнительные унаследованные члены

  • 11 static public members inherited from QObject
  • 9 protected functions inherited from QObject

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

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

Он чаще всего используется для анимации элемента графического интерфейса, вызывая слот периодически. Вы можете создать временную шкалу, передав её продолжительность в миллисекундах в конструктор 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, SIGNAL(frameChanged(int)), progressBar, SLOT(setValue(int)));

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

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

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

Обратите внимание, что по умолчанию QTimeLine использует форму кривой EaseInOut, которая обеспечивает значение, медленно возрастающее, затем увеличивающееся равномерно и, наконец, медленно возрастающее. Для пользовательского таймлайна можно переопределить valueForTime(), в этом случае свойство QTimeLine's curveShape игнорируется.

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

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

enum QTimeLine::CurveShape

Этот перечисление описывает форму кривой значений QTimeLine по умолчанию. Значение по умолчанию — EaseInOutCurve. Кривая определяет взаимосвязь между значением и таймлайном.

Константа Значение Описание
QTimeLine::EaseInCurve 0 Значение начинает медленно расти, затем увеличивается со скоростью.
QTimeLine::EaseOutCurve 1 Значение начинает расти равномерно, затем замедляется.
QTimeLine::EaseInOutCurve 2 Значение начинает расти медленно, затем равномерно, затем снова медленно.
QTimeLine::LinearCurve 3 Значение растёт линейно (например, если продолжительность 1000 мс, значение в момент 500 мс равно 0,5).
QTimeLine::SineCurve 4 Значение растёт синусоидально.
QTimeLine::CosineCurve 5 Значение растёт косинусоидально.

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

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

END_OF_DOCUMENT_MARKER

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

currentTime : int

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

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

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

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

int currentTime() const
void setCurrentTime(int msec)

curveShape : CurveShape

Это свойство хранит форму кривой временной шкалы.

Форма кривой описывает отношение между временем и значением для базовой реализации valueForTime().

Если вы переопределили valueForTime(), это значение игнорируется.

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

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

QTimeLine::CurveShape curveShape() const
void setCurveShape(QTimeLine::CurveShape shape)

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

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

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

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

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

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

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 миллисекунд.

[virtual] QTimeLine::~QTimeLine()

Уничтожает временную шкалу.

int QTimeLine::currentFrame() const

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

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

qreal QTimeLine::currentValue() const

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

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

int QTimeLine::endFrame() const

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

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

[signal] void QTimeLine::finished()

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

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

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

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

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

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

int QTimeLine::frameForTime(int msec) const

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

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

[slot] void QTimeLine::resume()

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

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

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

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

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

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

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

void QTimeLine::setStartFrame(int frame)

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

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

[slot] void QTimeLine::start()

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

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

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

int QTimeLine::startFrame() const

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

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

QTimeLine::State QTimeLine::state() const

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

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

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

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

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

[slot] void QTimeLine::stop()

Останавливает таймлайн, переводя QTimeLine в состояние NotRunning.

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

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

Переопределён из QObject::timerEvent().

[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] 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/archives/qt-5.11/qtimeline.html

Spec-Zone.ru

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