Класс 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
- 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