Класс QVariantAnimation
Класс QVariantAnimation предоставляет базовый класс для анимаций. Подробнее...
| Заголовок: | #include <QVariantAnimation> |
| qmake: | QT += core |
| С: | Qt 4.6 |
| Наследует: | QAbstractAnimation |
| Наследуется от: |
Типы
| typedef | KeyValue |
| typedef | KeyValues |
Свойства
|
|
- 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
- 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) |
| 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 публичных слотов унаследовано от QAbstractAnimation
- 1 публичный слот унаследовано от 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().
END_OF_DOCUMENT_MARKERvoid 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/qt-5.9/qvariantanimation.html