Spec-Zone.ru › Qt 5.6

Класс QVariantAnimation

Класс QVariantAnimation предоставляет базовый класс для анимаций. Подробнее...

Заголовок: #include <QVariantAnimation>
qmake: QT += core
С момента: Qt 4.6
Наследует: QAbstractAnimation
Наследуется от:

QPropertyAnimation

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

Типы

typedef KeyValue
typedef KeyValues

Свойства

  • currentValue : const QVariant
  • duration : int
  • easingCurve : QEasingCurve
  • endValue : QVariant
  • startValue : QVariant
  • 6 свойств унаследовано от QAbstractAnimation
  • 1 свойство унаследовано от QObject

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

QVariantAnimation(QObject *parent = Q_NULLPTR)
~QVariantAnimation()
QVariant currentValue() const
QEasingCurve easingCurve() const
QVariant endValue() const
QVariant keyValueAt(qreal step) const
KeyValues keyValues() const
void setDuration(int msecs)
void setEasingCurve(const QEasingCurve &easing)
void setEndValue(const QVariant &value)
void setKeyValueAt(qreal step, const QVariant &value)
void setKeyValues(const KeyValues &keyValues)
void setStartValue(const QVariant &value)
QVariant startValue() const

Переопределённые открытые функции

virtual int duration() const
  • 11 открытых функций унаследовано от QAbstractAnimation
  • 31 открытых функций унаследовано от QObject

Сигналы

void valueChanged(const QVariant &value)
  • 4 сигнала унаследовано от QAbstractAnimation
  • 2 сигнала унаследовано от QObject

Защищённые функции

virtual QVariant interpolated(const QVariant &from, const QVariant &to, qreal progress) const
virtual void updateCurrentValue(const QVariant &value)

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

virtual bool event(QEvent *event)
virtual void updateCurrentTime(int)
virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
  • 4 защищённых функции унаследовано от QAbstractAnimation
  • 9 защищённых функций унаследовано от QObject

Связанные нечлены

void qRegisterAnimationInterpolator(QVariant(* ) ( const T & from, const T & to, qreal progress ) func)

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

  • 6 public slots унаследовано от QAbstractAnimation
  • 1 public slot унаследовано от QObject
  • 11 статических открытых членов унаследовано от QObject

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

Класс QVariantAnimation предоставляет базовый класс для анимаций.

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

Класс выполняет интерполяцию над QVariant, но оставляет использование интерполированных значений своим подклассам. В настоящее время Qt предоставляет QPropertyAnimation, который анимирует свойства Qt свойств. См. описание класса QPropertyAnimation, если вы хотите анимировать такие свойства.

Затем вы можете установить начальные и конечные значения для свойства, вызвав setStartValue() и setEndValue(), а затем вызовите start() для запуска анимации. QVariantAnimation будет интерполировать свойство целевого объекта и испускать valueChanged(). Для реагирования на изменение текущего значения необходимо переопределить виртуальную функцию updateCurrentValue() или подключиться к указанному сигналу.

Также возможно установить значения в заданных шагах, расположенных между начальным и конечным значением. Интерполяция затем коснется этих точек в заданных шагах. Обратите внимание, что начальные и конечные значения определены как ключевые значения в 0.0 и 1.0.

Существует два способа влиять на то, как QVariantAnimation интерполирует значения. Вы можете установить кривую сглаживания, вызвав setEasingCurve(), и настроить длительность, вызвав setDuration(). Вы можете изменить способ интерполяции QVariant, создав подкласс QVariantAnimation и переопределив виртуальную функцию interpolated().

Наследование от QVariantAnimation может быть альтернативой, если у вас есть QVariant, которые вы не хотите объявлять как свойства Qt. Обратите внимание, однако, что в большинстве случаев вам будет лучше объявить ваш QVariant как свойство.

Не все типы QVariant поддерживаются. Ниже приведен список поддерживаемых в настоящее время типов QVariant:

  • Целое число
  • Целое без знака
  • Двойная точность
  • Одинарная точность
  • QLine
  • QLineF
  • QPoint
  • QPointF
  • QSize
  • QSizeF
  • QRect
  • QRectF
  • QColor

Если вам нужно интерполировать другие типы вариантов, включая пользовательские типы, вы должны сами реализовать интерполяцию для них. Для этого вы можете зарегистрировать функцию-интерполятора для заданного типа. Эта функция принимает 3 параметра: начальное значение, конечное значение и текущий прогресс.

Пример:

QVariant myColorInterpolator(const QColor &start, const QColor &end, qreal progress)
{
    ...
    return QColor(...);
}
...
qRegisterAnimationInterpolator<QColor>(myColorInterpolator);

Другой вариант — переопределить interpolated(), которая возвращает значения интерполяции для интерполируемого значения.

См. также QPropertyAnimation, QAbstractAnimation и Фреймворк анимации.

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

typedef QVariantAnimation::KeyValue

Это псевдоним для QPair<qreal, QVariant>.

typedef QVariantAnimation::KeyValues

Это псевдоним для QVector<KeyValue>

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

currentValue : const QVariant

Это свойство содержит текущее значение анимации.

Это свойство описывает текущее значение; интерполированное значение между начальным значением и конечным значением, используя текущее время для прогресса. Само значение получено из interpolated(), которая вызывается многократно по мере выполнения анимации.

QVariantAnimation вызывает виртуальную функцию updateCurrentValue() при изменении текущего значения. Это особенно полезно для подклассов, которым необходимо отслеживать обновления. Например, QPropertyAnimation использует эту функцию для анимации свойств Qt.

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

QVariant currentValue() const

Сигнал уведомления:

void valueChanged(const QVariant &value)

См. также startValue и endValue.

duration : int

Это свойство содержит продолжительность анимации

Это свойство описывает продолжительность анимации в миллисекундах. По умолчанию продолжительность составляет 250 миллисекунд.

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

virtual int duration() const
void setDuration(int msecs)

См. также QAbstractAnimation::duration().

easingCurve : QEasingCurve

Это свойство содержит кривую смягчения анимации

Это свойство определяет кривую смягчения анимации. По умолчанию используется линейная кривая смягчения, что приводит к линейной интерполяции. Представлены и другие кривые, например, QEasingCurve::InCirc, которая предоставляет кривую с круговым началом. Другой пример — QEasingCurve::InOutElastic, которая обеспечивает упругий эффект для значений интерполируемого варианта.

QVariantAnimation будет использовать QEasingCurve::valueForProgress() для преобразования «нормализованного прогресса» (currentTime / totalDuration) анимации в фактический прогресс, используемый анимацией. Именно этот фактический прогресс будет прогрессом при вызове interpolated(). Кроме того, шаги в keyValues относятся к этому фактическому прогрессу.

Кривая смягчения используется с интерполятором, виртуальной функцией interpolated() и продолжительностью анимации для управления тем, как изменяется текущее значение по мере прогресса анимации.

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

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

endValue : QVariant

Это свойство содержит конечное значение анимации

Это свойство описывает конечное значение анимации.

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

QVariant endValue() const
void setEndValue(const QVariant &value)

См. также startValue.

startValue : QVariant

Это свойство содержит необязательное начальное значение анимации

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

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

QVariant startValue() const
void setStartValue(const QVariant &value)

См. также endValue.

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

QVariantAnimation::QVariantAnimation(QObject *parent = Q_NULLPTR)

Конструирует объект QVariantAnimation. parent передается конструктору QAbstractAnimation.

QVariantAnimation::~QVariantAnimation()

Уничтожает анимацию.

[virtual protected] bool QVariantAnimation::event(QEvent *event)

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

[virtual protected] QVariant QVariantAnimation::interpolated(const QVariant &from, const QVariant &to, qreal progress) const

Эта виртуальная функция возвращает линейную интерполяцию между вариантами from и to при progress, обычно значением между 0 и 1. Вы можете переопределить эту функцию в подклассе QVariantAnimation, чтобы предоставить свой собственный алгоритм интерполяции.

Обратите внимание, что для того, чтобы интерполяция работала с QEasingCurve, возвращающей значение меньше 0 или больше 1 (например, QEasingCurve::InBack), вам следует убедиться, что она может экстраполировать. Если семантика типа данных не позволяет экстраполяцию, эта функция должна обрабатывать это должным образом.

Вы должны вызвать реализацию QVariantAnimation этой функции, если хотите, чтобы ваш класс обрабатывал типы, уже поддерживаемые Qt (см. описание класса QVariantAnimation для списка поддерживаемых типов).

См. также QEasingCurve.

QVariant QVariantAnimation::keyValueAt(qreal step) const

Возвращает значение ключевой кадра для заданного step. Указанное step должно находиться в диапазоне от 0 до 1. Если для step нет KeyValue, возвращается недопустимый QVariant.

См. также keyValues() и setKeyValueAt().

KeyValues QVariantAnimation::keyValues() const

Возвращает ключевые кадры этой анимации.

См. также keyValueAt() и setKeyValues().

void QVariantAnimation::setKeyValueAt(qreal step, const QVariant &value)

Создает ключевой кадр в заданном step со значением value. Указанное step должно находиться в диапазоне от 0 до 1.

См. также setKeyValues() и keyValueAt().

void QVariantAnimation::setKeyValues(const KeyValues &keyValues)

Заменяет текущий набор ключевых кадров заданными keyValues. Шаг ключевых кадров должен находиться в диапазоне от 0 до 1.

См. также keyValues() и keyValueAt().

[virtual protected] void QVariantAnimation::updateCurrentTime(int)

Переопределено из QAbstractAnimation::updateCurrentTime().

[virtual protected] void QVariantAnimation::updateCurrentValue(const QVariant &value)

Этот виртуальный метод вызывается каждый раз, когда изменяется текущее значение анимации. Аргумент value — это новое текущее значение.

Реализация базового класса ничего не делает.

См. также currentValue.

[virtual protected] void QVariantAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

Переопределено из QAbstractAnimation::updateState().

[signal] void QVariantAnimation::valueChanged(const QVariant &value)

QVariantAnimation излучает этот сигнал всякий раз, когда изменяется текущее значение value.

Примечание: Сигнал-уведомление для свойства currentValue.

См. также currentValue, startValue и endValue.

Связанные внешние члены

void qRegisterAnimationInterpolator(QVariant(* ) ( const T & from, const T & to, qreal progress ) func)

Регистрирует пользовательский интерполятор func для типа шаблона T. Интерполятор должен быть зарегистрирован до создания анимации. Чтобы отменить регистрацию (и использовать стандартный интерполятор), установите func в 0.

Примечание: Эта функция безопасна в многопоточной среде.

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

Spec-Zone.ru

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