Класс QEasingCurve
Класс QEasingCurve предоставляет кривые смягчения для управления анимацией. Подробнее...
| Заголовок: | #include <QEasingCurve> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
Типы публичного доступа
| EasingFunction | |
| Перечисление | Type { Linear, InQuad, OutQuad, InOutQuad, OutInQuad, …, Custom } |
Функции публичного доступа
| QEasingCurve(QEasingCurve &&other) | |
| QEasingCurve(const QEasingCurve &other) | |
| QEasingCurve(QEasingCurve::Type type = Linear) | |
| QEasingCurve & | operator=(QEasingCurve &&other) |
| QEasingCurve & | operator=(const QEasingCurve &other) |
| ~QEasingCurve() | |
| void | addCubicBezierSegment(const QPointF &c1, const QPointF &c2, const QPointF &endPoint) |
| void | addTCBSegment(const QPointF &nextPoint, qreal t, qreal c, qreal b) |
| qreal | amplitude() const |
| QEasingCurve::EasingFunction | customType() const |
| qreal | overshoot() const |
| qreal | period() const |
| void | setAmplitude(qreal amplitude) |
| void | setCustomType(QEasingCurve::EasingFunction func) |
| void | setOvershoot(qreal overshoot) |
| void | setPeriod(qreal period) |
| void | setType(QEasingCurve::Type type) |
| void | swap(QEasingCurve &other) |
| QList<QPointF> | toCubicSpline() const |
| QEasingCurve::Type | type() const |
| qreal | valueForProgress(qreal progress) const |
| bool | operator!=(const QEasingCurve &other) const |
| bool | operator==(const QEasingCurve &other) const |
Связанные нечлены
| QDataStream & | operator<<(QDataStream &stream, const QEasingCurve &easing) |
| QDataStream & | operator>>(QDataStream &stream, QEasingCurve &easing) |
Подробное описание
Кривые смягчения описывают функцию, которая управляет тем, как должна изменяться скорость интерполяции между 0 и 1. Кривые смягчения позволяют переходам от одного значения к другому выглядеть более естественно, чем простая постоянная скорость. Класс QEasingCurve обычно используется совместно с классами QVariantAnimation и QPropertyAnimation, но может быть использован и самостоятельно. Обычно он используется для ускорения интерполяции от нулевой скорости (плавный вход) или замедления до нулевой скорости (плавный выход). Плавный вход и плавный выход также могут быть объединены в одной кривой смягчения.
Для расчета скорости интерполяции кривая смягчения предоставляет функцию valueForProgress(), где аргумент progress указывает на прогресс интерполяции: 0 — начальное значение интерполяции, 1 — конечное значение интерполяции. Возвращаемое значение — эффективный прогресс интерполяции. Если возвращаемое значение такое же, как входное значение для всех входных значений, то кривая смягчения является линейной кривой. Это поведение по умолчанию.
Например,
QEasingCurve easing(QEasingCurve::InOutQuad);
for (qreal t = 0.0; t < 1.0; t += 0.1)
qWarning() << "Effective progress" << t << "is"
<< easing.valueForProgress(t); будет выводить эффективный прогресс интерполяции между 0 и 1.
При использовании QPropertyAnimation соответствующая кривая смягчения будет использоваться для управления прогрессом интерполяции между startValue и endValue:
QPropertyAnimation animation;
animation.setStartValue(0);
animation.setEndValue(1000);
animation.setDuration(1000);
animation.setEasingCurve(QEasingCurve::InOutQuad); Возможность устанавливать амплитуду, перекос или период зависит от типа QEasingCurve. Доступ к амплитуде доступен для кривых, которые ведут себя как пружины, такие как кривые «elastic» и «bounce». Изменение амплитуды изменяет высоту кривой. Доступ к периоду доступен только для кривых «elastic», и установка большего периода замедляет скорость отскока. Только кривые с «баллистическими» поведением, такими как InBack, OutBack, InOutBack и OutInBack, имеют настройки перекоса. Эти кривые будут интерполировать за пределами конечных точек и возвращаться в конечную точку, действуя как бумеранг.
В примере Кривые смягчения (Easing Curves) содержатся примеры типов QEasingCurve и позволяют изменять настройки кривой.
Документация по типам членов
QEasingCurve::EasingFunction
Это псевдоним для указателя на функцию со следующим сигнатуром:
qreal myEasingFunction(qreal progress);
Перечисление QEasingCurve::Type
Тип кривой смягчения.
| Постоянная | Значение |
|---|---|
QEasingCurve::Linear |
0 |
Кривая смягчения для линейной (t) функции: скорость постоянна.
| Постоянная | Значение |
|---|---|
QEasingCurve::InQuad |
1 |
Кривая смягчения для квадратичной (t^2) функции: ускорение с нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutQuad |
2 |
Кривая смягчения для квадратичной (t^2) функции: замедление до нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::InOutQuad |
3 |
Кривая смягчения для квадратичной (t^2) функции: ускорение до середины, затем замедление.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutInQuad |
4 |
Кривая смягчения для квадратичной (t^2) функции: замедление до середины, затем ускорение.
| Постоянная | Значение |
|---|---|
QEasingCurve::InCubic |
5 |
Кривая смягчения для кубической (t^3) функции: ускорение с нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutCubic |
6 |
Кривая плавного изменения для кубической (t^3) функции: замедление до нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::InOutCubic |
7 |
Кривая плавного изменения для кубической (t^3) функции: ускорение до середины, затем замедление.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutInCubic |
8 |
Кривая плавного изменения для кубической (t^3) функции: замедление до середины, затем ускорение.
| Постоянная | Значение |
|---|---|
QEasingCurve::InQuart |
9 |
Кривая плавного изменения для четвёртой степени (t^4) функции: ускорение от нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutQuart |
10 |
Кривая плавного изменения для четвёртой степени (t^4) функции: замедление до нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::InOutQuart |
11 |
Кривая плавного изменения для четвёртой степени (t^4) функции: ускорение до середины, затем замедление.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutInQuart |
12 |
Кривая плавного изменения для четвёртой степени (t^4) функции: замедление до середины, затем ускорение.
| Постоянная | Значение |
|---|---|
QEasingCurve::InQuint |
13 |
Кривая плавного изменения для пятой степени (t^5) функции: ускорение от нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutQuint |
14 |
Кривая плавного изменения для пятой степени (t^5) функции: замедление до нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::InOutQuint |
15 |
Кривая плавного изменения для пятой степени (t^5) функции: ускорение до середины, затем замедление.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutInQuint |
16 |
Кривая плавного изменения для пятой степени (t^5) функции: замедление до середины, затем ускорение.
| Постоянная | Значение |
|---|---|
QEasingCurve::InSine |
17 |
Кривая плавного изменения для синусоидальной (sin(t)) функции: ускорение от нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutSine |
18 |
Кривая плавного изменения для синусоидальной (sin(t)) функции: замедление до нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::InOutSine |
19 |
Кривая плавного изменения для синусоидальной (sin(t)) функции: ускорение до середины, затем замедление.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutInSine |
20 |
Кривая плавного изменения для синусоидальной (sin(t)) функции: замедление до середины, затем ускорение.
| Постоянная | Значение |
|---|---|
QEasingCurve::InExpo |
21 |
Кривая плавного изменения для экспоненциальной (2^t) функции: ускорение от нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutExpo |
22 |
Кривая плавного изменения для экспоненциальной (2^t) функции: замедление до нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::InOutExpo |
23 |
Кривая плавного изменения для экспоненциальной (2^t) функции: ускорение до середины, затем замедление.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutInExpo |
24 |
Кривая плавного изменения для экспоненциальной (2^t) функции: замедление до середины, затем ускорение.
| Постоянная | Значение |
|---|---|
QEasingCurve::InCirc |
25 |
Кривая плавного изменения для круговой (sqrt(1-t^2)) функции: ускорение от нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutCirc |
26 |
Кривая плавного изменения для круговой (sqrt(1-t^2)) функции: замедление до нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::InOutCirc |
27 |
Кривая плавного изменения для круговой (sqrt(1-t^2)) функции: ускорение до середины, затем замедление.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutInCirc |
28 |
Кривая плавного изменения для круговой (sqrt(1-t^2)) функции: замедление до середины, затем ускорение.
| Постоянная | Значение |
|---|---|
QEasingCurve::InElastic |
29 |
Кривая плавного изменения для эластичной (экспоненциально затухающей синусоидальной) функции: ускорение от нулевой скорости. Пиковую амплитуду можно задать параметром amplitude, а период затухания — параметром period.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutElastic |
30 |
Кривая плавного изменения для эластичной (экспоненциально затухающей синусоидальной) функции: замедление до нулевой скорости. Пиковую амплитуду можно задать параметром amplitude, а период затухания — параметром period.
| Постоянная | Значение |
|---|---|
QEasingCurve::InOutElastic |
31 |
Кривая плавного изменения для эластичной (экспоненциально затухающей синусоидальной) функции: ускорение до середины, затем замедление.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutInElastic |
32 |
Кривая плавного изменения для эластичной (экспоненциально затухающей синусоидальной) функции: замедление до середины, затем ускорение.
| Постоянная | Значение |
|---|---|
QEasingCurve::InBack |
33 |
Кривая плавного изменения для обратной (перескок кубической функции: (s+1)*t^3 - s*t^2) функции: ускорение от нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutBack |
34 |
Кривая плавного изменения для обратной (перескок кубической функции: (s+1)*t^3 - s*t^2) функции: замедление до нулевой скорости.
| Константа | Значение |
|---|---|
QEasingCurve::InOutBack |
35 |
Кривая сглаживания для обратного (перескок кубическая функция: (s+1)*t^3 - s*t^2) сглаживания в/из: ускорение до середины, затем замедление.
| Константа | Значение |
|---|---|
QEasingCurve::OutInBack |
36 |
Кривая сглаживания для обратного (перескок кубическое сглаживание: (s+1)*t^3 - s*t^2) сглаживания из/в: замедление до середины, затем ускорение.
| Константа | Значение |
|---|---|
QEasingCurve::InBounce |
37 |
Кривая сглаживания для отскока (экспоненциально убывающая параболическая функция отскока): ускорение с нулевой скорости.
| Константа | Значение |
|---|---|
QEasingCurve::OutBounce |
38 |
Кривая сглаживания для отскока (экспоненциально убывающая параболическая функция отскока): замедление с нулевой скорости.
| Константа | Значение |
|---|---|
QEasingCurve::InOutBounce |
39 |
Кривая сглаживания для отскока (экспоненциально убывающая параболическая функция отскока) в/из: ускорение до середины, затем замедление.
| Константа | Значение |
|---|---|
QEasingCurve::OutInBounce |
40 |
Кривая сглаживания для отскока (экспоненциально убывающая параболическая функция отскока) из/в: замедление до середины, затем ускорение.
| Константа | Значение | Описание |
|---|---|---|
QEasingCurve::BezierSpline |
45 |
Позволяет определить пользовательскую кривую сглаживания с помощью кубической сплайна Безье |
QEasingCurve::TCBSpline |
46 |
Позволяет определить пользовательскую кривую сглаживания с помощью сплайна TCB |
QEasingCurve::Custom |
47 |
Возвращается, если пользователь указал тип пользовательской кривой с помощью setCustomType(). Обратите внимание, что вы не можете вызвать setType() с этим значением, но type() может вернуть его. |
См. также addCubicBezierSegment() и addTCBSegment().
Документация функций-членов
[since 5.2] QEasingCurve::QEasingCurve(QEasingCurve &&other)
Перемещает экземпляр QEasingCurve, сделав его указывающим на тот же объект, на который указывал other.
Эта функция была введена в Qt 5.2.
QEasingCurve::QEasingCurve(const QEasingCurve &other)
Создаёт копию other.
QEasingCurve::QEasingCurve(QEasingCurve::Type type = Linear)
Создаёт кривую сглаживания заданного типа type.
[since 5.2] QEasingCurve &QEasingCurve::operator=(QEasingCurve &&other)
Перемещает other в этот экземпляр QEasingCurve.
Эта функция была введена в Qt 5.2.
QEasingCurve &QEasingCurve::operator=(const QEasingCurve &other)
Копирует other.
QEasingCurve::~QEasingCurve()
Деструктор.
void QEasingCurve::addCubicBezierSegment(const QPointF &c1, const QPointF &c2, const QPointF &endPoint)
Добавляет отрезок кубической сплайна Безье для определения пользовательской кривой сглаживания. Применимо только если type() является QEasingCurve::BezierSpline. Обратите внимание, что сплайн неявно начинается с (0.0, 0.0) и должен заканчиваться (1.0, 1.0), чтобы быть действительной кривой сглаживания. c1 и c2 — контрольные точки, используемые для построения кривой. endPoint — конечная точка кривой.
void QEasingCurve::addTCBSegment(const QPointF &nextPoint, qreal t, qreal c, qreal b)
Добавляет отрезок сплайна TCB Безье для определения пользовательской кривой сглаживания. Применимо только если type() является QEasingCurve::TCBSpline. Сплайн должен явно начинаться с (0.0, 0.0) и заканчиваться (1.0, 1.0), чтобы быть действительной кривой сглаживания. Напряжение t изменяет длину вектора касательной. Непрерывность c изменяет резкость изменения между касательными. Смещение b изменяет направление вектора касательной. nextPoint — позиция образца. Все три параметра действительны в пределах от -1 до 1 и определяют касательную к контрольной точке. Если все три параметра равны 0, то полученный сплайн является сплайном Катмулла-Рома. У начала и конца всегда есть смещение -1 и 1, поскольку внешняя касательная не определена.
qreal QEasingCurve::amplitude() const
Возвращает амплитуду. Не применимо для всех типов кривых. Применимо только для кривых отскока и упругих кривых (кривые типа QEasingCurve::InBounce, QEasingCurve::OutBounce, QEasingCurve::InOutBounce, QEasingCurve::OutInBounce, QEasingCurve::InElastic, QEasingCurve::OutElastic, QEasingCurve::InOutElastic или QEasingCurve::OutInElastic).
См. также setAmplitude().
QEasingCurve::EasingFunction QEasingCurve::customType() const
Возвращает указатель на функцию пользовательской кривой сглаживания. Если type() не возвращает QEasingCurve::Custom, эта функция вернёт 0.
См. также setCustomType().
qreal QEasingCurve::overshoot() const
Возвращает перескок. Не применимо для всех типов кривых. Применимо только если type() является QEasingCurve::InBack, QEasingCurve::OutBack, QEasingCurve::InOutBack или QEasingCurve::OutInBack.
См. также setOvershoot().
qreal QEasingCurve::period() const
Возвращает период. Не применимо для всех типов кривых. Применимо только если type() является QEasingCurve::InElastic, QEasingCurve::OutElastic, QEasingCurve::InOutElastic или QEasingCurve::OutInElastic.
См. также setPeriod().
void QEasingCurve::setAmplitude(qreal amplitude)
Устанавливает амплитуду в amplitude.
Это установит амплитуду отскока или амплитуду упругого «эффекта пружины». Чем больше число, тем больше амплитуда.
См. также amplitude().
void QEasingCurve::setCustomType(QEasingCurve::EasingFunction func)
Устанавливает пользовательскую кривую сглаживания, определённую пользователем в функции func. Подпись функции: qreal myEasingFunction(qreal progress), где progress и возвращаемое значение считаются нормализованными в диапазоне от 0 до 1. (В некоторых случаях возвращаемое значение может выйти за этот диапазон) После вызова этой функции type() вернёт QEasingCurve::Custom. func не может быть нулём.
См. также customType() и valueForProgress().
void QEasingCurve::setOvershoot(qreal overshoot)
Устанавливает перескок в overshoot.
Значение 0 не приводит к перескоку, а значение по умолчанию 1.70158 приводит к перескоку на 10 процентов.
См. также overshoot().
void QEasingCurve::setPeriod(qreal period)
Устанавливает период в period. Установка небольшого значения периода даст высокую частоту кривой. Большое значение периода даст низкую частоту.
См. также period().
void QEasingCurve::setType(QEasingCurve::Type type)
Устанавливает тип кривой сглаживания на type.
См. также type().
[since 5.0] void QEasingCurve::swap(QEasingCurve &other)
Меняет местами кривую other с этой кривой. Эта операция очень быстрая и никогда не завершается ошибкой.
Эта функция была добавлена в Qt 5.0.
[since 5.0] QList<QPointF> QEasingCurve::toCubicSpline() const
Возвращает cubicBezierSpline, определяющую пользовательскую кривую сглаживания. Если кривая сглаживания не имеет пользовательской кривой сглаживания Безьер, список пустой.
Эта функция была добавлена в Qt 5.0.
QEasingCurve::Type QEasingCurve::type() const
Возвращает тип кривой сглаживания.
См. также setType().
qreal QEasingCurve::valueForProgress(qreal progress) const
Возвращает эффективное значение прогресса для кривой сглаживания в точке progress. В то время как progress должен быть между 0 и 1, возвращаемое эффективное значение прогресса может быть вне этих границ. Например, QEasingCurve::InBack вернёт отрицательные значения в начале функции.
bool QEasingCurve::operator!=(const QEasingCurve &other) const
Сравнивает эту кривую сглаживания с other и возвращает true если они не равны. Также сравниваются свойства кривой.
См. также operator==().
bool QEasingCurve::operator==(const QEasingCurve &other) const
Сравнивает эту кривую сглаживания с other и возвращает true если они равны. Также сравниваются свойства кривой.
Связанные нечлены
QDataStream &operator<<(QDataStream &stream, const QEasingCurve &easing)
Записывает данную кривую easing в указанный stream и возвращает ссылку на поток.
См. также Сериализация типов данных Qt.
QDataStream &operator>>(QDataStream &stream, QEasingCurve &easing)
Считывает кривую сглаживания из указанного stream в указанную кривую easing и возвращает ссылку на поток.
См. также Сериализация типов данных Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qeasingcurve.html