Spec-Zone.ru › Qt 5.14

Класс QVariantAnimation

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

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

QPropertyAnimation

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

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

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

typedef KeyValue
typedef KeyValues

Свойства

  • currentValue : const QVariant
  • duration : int
  • easingCurve : QEasingCurve
  • endValue : QVariant
  • startValue : QVariant

Публичные функции

QVariantAnimation(QObject *parent = nullptr)
virtual ~QVariantAnimation()
QVariant currentValue() const
QEasingCurve easingCurve() const
QVariant endValue() const
QVariant keyValueAt(qreal step) const
QVariantAnimation::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 QVariantAnimation::KeyValues &keyValues)
void setStartValue(const QVariant &value)
QVariant startValue() const

Переопределенные публичные функции

virtual int duration() const override

Сигналы

void valueChanged(const QVariant &value)

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

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

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

virtual bool event(QEvent *event) override
virtual void updateCurrentTime(int) override
virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) override

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

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

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

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

Класс выполняет интерполяцию над 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:

  • Int
  • UInt
  • Double
  • Float
  • 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 properties.

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

QVariant currentValue() const

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

void valueChanged(const QVariant &value)

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

duration : int

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

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

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

virtual int duration() const override
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 = nullptr)

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

void QVariantAnimation::valueChanged(const QVariant &value)

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

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

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

QVariantAnimation::~QVariantAnimation()

Удаляет анимацию.

bool QVariantAnimation::event(QEvent *event)

Переопределяет: QAbstractAnimation::event(QEvent *event).

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

QVariantAnimation::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 QVariantAnimation::KeyValues &keyValues)

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

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

void QVariantAnimation::updateCurrentTime(int)

Переопределяет: QAbstractAnimation::updateCurrentTime(int currentTime).

void QVariantAnimation::updateCurrentValue(const QVariant &value)

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

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

См. также currentValue.

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

Переопределяет: QAbstractAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState).

Связанные нечленные функции

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

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

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

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

Spec-Zone.ru

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