Spec-Zone.ru › Qt 5.13

Класс QTimeLine

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

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

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

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

Общедоступные типы

Перечисление CurveShape { EaseInCurve, EaseOutCurve, EaseInOutCurve, LinearCurve, SineCurve, CosineCurve }
Перечисление Direction { Forward, Backward }
Перечисление State { NotRunning, Paused, Running }

Свойства

  • currentTime : int
  • curveShape : CurveShape
  • 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::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

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

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, 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(), которая устанавливает позицию во времени таймлайна напрямую. Хотя наиболее полезна в состоянии НеЗапущен (например, подключенная к сигналу 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. Значение по умолчанию для duration – 1000 миллисекунд.

[signal] void QTimeLine::finished()

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

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

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

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

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

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

[slot] void QTimeLine::resume()

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

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

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

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

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

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

[slot] void QTimeLine::start()

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

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

См. также 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.13/qtimeline.html

Spec-Zone.ru

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