Spec-Zone.ru › Qt 5.12

Класс QEasingCurve

Класс QEasingCurve предоставляет кривые сглаживания для управления анимацией. Подробнее...

Заголовок: #include <QEasingCurve>
qmake: QT += core
С тех пор: Qt 4.6
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Типы public

typedef EasingFunction
Перечисление Type { Linear, InQuad, OutQuad, InOutQuad, ..., Custom }

Public функции

QEasingCurve(QEasingCurve::Type type = Linear)
QEasingCurve(const QEasingCurve &other)
QEasingCurve(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)
QVector<QPointF> toCubicSpline() const
QEasingCurve::Type type() const
qreal valueForProgress(qreal progress) const
bool operator!=(const QEasingCurve &other) const
QEasingCurve & operator=(const QEasingCurve &other)
QEasingCurve & operator=(QEasingCurve &&other)
bool operator==(const QEasingCurve &other) const

Статические public члены

const QMetaObject staticMetaObject

Связанные нечлены

QDataStream & operator<<(QDataStream &stream, const QEasingCurve &easing)
QDataStream & operator>>(QDataStream &stream, QEasingCurve &easing)

Подробное описание

Класс QEasingCurve предоставляет кривые сглаживания для управления анимацией.

Кривые сглаживания описывают функцию, которая управляет тем, как должна изменяться скорость интерполяции между 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, имеют настройки перескока. Эти кривые будут интерполировать за пределы конечных точек и вернуться в конечную точку, действуя подобно бумерангу.

Пример кривых сглаживания содержит примеры типов QEasingCurve и позволяет вам изменить настройки кривой.

Документация по типам членов

typedef QEasingCurve::EasingFunction

Это typedef для указателя на функцию со следующим сигнатурой:

qreal myEasingFunction(qreal progress);

enum 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().

Документация по функциям-членам

QEasingCurve::QEasingCurve(QEasingCurve::Type type = Linear)

Создаёт кривую плавного изменения заданного типа type.

QEasingCurve::QEasingCurve(const QEasingCurve &other)

Создаёт копию other.

QEasingCurve::QEasingCurve(QEasingCurve &&other)

Создаёт QEasingCurve экземпляр с перемещением, привязывая его к тому же объекту, что и other.

Эта функция была добавлена в Qt 5.2.

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().

void QEasingCurve::swap(QEasingCurve &other)

Меняет местами кривую other с этой кривой. Эта операция очень быстрая и никогда не завершается ошибкой.

Эта функция была добавлена в Qt 5.0.

QVector<QPointF> QEasingCurve::toCubicSpline() const

Возвращает cubicBezierSpline, определяющую пользовательскую кривую сглаживания. Если кривая сглаживания не имеет пользовательской кривой сглаживания Bézier, список пуст.

Эта функция была добавлена в 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==().

QEasingCurve &QEasingCurve::operator=(const QEasingCurve &other)

Копирует other.

QEasingCurve &QEasingCurve::operator=(QEasingCurve &&other)

Перемещает присвоение other этому экземпляру QEasingCurve.

Эта функция была добавлена в Qt 5.2.

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-5.12/qeasingcurve.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API