Класс QVariantAnimation
Класс QVariantAnimation предоставляет базовый класс для анимаций. Подробнее...
| Заголовок: | #include <QVariantAnimation> |
| qmake: | QT += core |
| С момента: | Qt 4.6 |
| Наследует: | QAbstractAnimation |
| Наследуется от: |
Типы
| typedef | KeyValue |
| typedef | KeyValues |
Свойства
|
|
- 6 свойств унаследовано от QAbstractAnimation
- 1 свойство унаследовано от QObject
Открытые функции
| 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 |
- 11 открытых функций унаследовано от QAbstractAnimation
- 32 открытых функций унаследовано от 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) override |
| virtual void | updateCurrentTime(int) override |
| virtual void | updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) override |
- 4 защищённых функции унаследовано от QAbstractAnimation
- 9 защищённых функций унаследовано от QObject
Связанные нечлены
| void | qRegisterAnimationInterpolator(QVariant (*)(const T &, const T &, qreal) func) |
Дополнительные унаследованные члены
- 6 публичных слотов унаследовано от QAbstractAnimation
- 1 публичный слот унаследовано от QObject
- 11 статических публичных членов унаследовано от QObject
Подробное описание
Класс QVariantAnimation предоставляет базовый класс для анимаций.
Этот класс является частью фреймворка анимации. Он служит базовым классом для анимации свойств и элементов, с функциями для совместного использования функциональности.
Класс выполняет интерполяцию над QVariant, но оставляет использование интерполированных значений своим подклассам. В настоящее время Qt предоставляет QPropertyAnimation, который анимирует свойства Qt properties. См. описание класса QPropertyAnimation, если вы хотите анимировать такие свойства.
Затем вы можете установить начальное и конечное значения свойства, вызвав setStartValue() и setEndValue(), и, наконец, вызовите start() для запуска анимации. QVariantAnimation будет интерполировать свойство целевого объекта и излучать valueChanged(). Для реагирования на изменение текущего значения необходимо переопределить виртуальную функцию updateCurrentValue() или подключиться к указанному сигналу.
Также можно установить значения в указанные шаги между начальным и конечным значением. Интерполяция затем коснётся этих точек в указанных шагах. Обратите внимание, что начальное и конечное значения определяются как ключевые значения в 0.0 и 1.0.
Есть два способа повлиять на то, как QVariantAnimation интерполирует значения. Вы можете установить кривую сглаживания, вызвав setEasingCurve(), и настроить продолжительность, вызвав setDuration(). Вы можете изменить способ интерполяции QVariant путём создания подкласса QVariantAnimation и переопределения виртуальной функции interpolated().
Наследование от QVariantAnimation может быть альтернативой, если у вас есть QVariant, которые вы не хотите объявлять как свойства Qt. Однако следует отметить, что в большинстве случаев лучше объявить вашу QVariant как свойство.
Не все типы QVariant поддерживаются. Ниже приведён список текущих поддерживаемых типов QVariant:
END_OF_DOCUMENT_MARKER- Целое число
- Беззнаковое целое число
- Двойная точность
- Поплавковая точка одинарной точности
- 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 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.
[virtual] QVariantAnimation::~QVariantAnimation()
Удаляет анимацию.
[override virtual protected] bool QVariantAnimation::event(QEvent *event)
Переопределено из QAbstractAnimation::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().
[virtual protected] void QVariantAnimation::updateCurrentValue(const QVariant &value)
Этот виртуальный метод вызывается каждый раз, когда изменяется текущее значение анимации. Аргумент value — новое текущее значение.
Реализация базового класса ничего не делает.
См. также currentValue.
[override 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 &, const T &, qreal) 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.11/qvariantanimation.html