Spec-Zone.ru › Qt 5.9

Класс QEasingCurve

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

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

Типы public

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

Public функции

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
EasingFunction customType() const
qreal overshoot() const
qreal period() const
void setAmplitude(qreal amplitude)
void setCustomType(EasingFunction func)
void setOvershoot(qreal overshoot)
void setPeriod(qreal period)
void setType(Type type)
void swap(QEasingCurve &other)
QVector<QPointF> toCubicSpline() const
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

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

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. Доступ к амплитуде доступен для кривых, которые ведут себя как пружины, такие как упругие и отскочившие кривые. Изменение амплитуды изменяет высоту кривой. Доступ к периоду доступен только для упругих кривых, и установка более высокого периода замедляет скорость отскока. Только кривые, имеющие поведение «бумеранга», такие как 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(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

Возвращает амплитуду. Это не применимо ко всем типам кривых. Применимо только к кривым отскока и эластичным кривым (кривым с type() QEasingCurve::InBounce, QEasingCurve::OutBounce, QEasingCurve::InOutBounce, QEasingCurve::OutInBounce, QEasingCurve::InElastic, QEasingCurve::OutElastic, QEasingCurve::InOutElastic или QEasingCurve::OutInElastic).

См. также setAmplitude().

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(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(Type type)

Устанавливает тип кривой сглаживания на type.

См. также type().

void QEasingCurve::swap(QEasingCurve &other)

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

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

QVector<QPointF> QEasingCurve::toCubicSpline() const

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

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

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

Spec-Zone.ru

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