Класс 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. Доступ к амплитуде предоставляется для кривых, которые ведут себя как пружины, такие как эластичные и отскочившие кривые. Изменение амплитуды изменяет высоту кривой. Доступ к периоду предоставляется только для эластичных кривых, а установка более высокого периода замедляет скорость отскока. Кривые, которые имеют поведение «бумеранга», такие как InBack, OutBack, InOutBack и OutInBack, имеют настройки превышения. Эти кривые будут интерполировать за пределами конечных точек и вернуться к конечной точке, ведя себя как бумеранг.
Пример кривых сглаживания содержит образцы типов 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.2/qeasingcurve.html