Spec-Zone.ru › Qt 6.1

Класс QVariantAnimation

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

Заголовок: #include <QVariantAnimation>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Наследуется от: QAbstractAnimation
Наследует:

QPropertyAnimation

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

Открытые типы

KeyValue
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(). Вы можете изменить способ интерполяции QVariants, создав подкласс 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 и Фреймворк анимации.

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

QVariantAnimation::KeyValue

Это typedef для QPair<qreal, QVariant>.

QVariantAnimation::KeyValues

Это typedef для QList<KeyValue>

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

[read-only] 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.

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

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

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

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

[virtual] QVariantAnimation::~QVariantAnimation()

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

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

Переопределяет: QAbstractAnimation::event(QEvent *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().

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

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

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

[virtual protected] 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).

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

template <typename T> 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-6.1/qvariantanimation.html

Spec-Zone.ru

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