이 페이지에서

QVariantAnimation Class

QVariantAnimation 클래스는 애니메이션의 기본 클래스를 제공합니다. 더 보기...

헤더: #include <QVariantAnimation>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
상속: QAbstractAnimation
상속받는 클래스:

QPropertyAnimation

공개 유형

속성

공개 함수

QVariantAnimation(QObject *parent = nullptr)
virtual ~QVariantAnimation()
QBindable<int> bindableDuration()
QBindable<QEasingCurve> bindableEasingCurve()
QVariant currentValue() const
QEasingCurve easingCurve() const
QVariant endValue() const
QVariant keyValueAt(qreal step) const
QVariantAnimation::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 QVariantAnimation::KeyValues &keyValues)
void setStartValue(const QVariant &value)
QVariant startValue() const

재구현된 공용 함수

virtual int duration() const override

신호

void valueChanged(const QVariant &value)

보호된 함수

virtual QVariant interpolated(const QVariant &from, const QVariant &to, qreal progress) const
virtual void updateCurrentValue(const QVariant &value)

재구현된 보호 함수

virtual bool event(QEvent *event) override
virtual void updateCurrentTime(int) override
virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) override
void qRegisterAnimationInterpolator(QVariant (*func)(const T &, const T &, qreal))

상세 설명

이 클래스는 'The Animation Framework'의 일부입니다. 이 클래스는 속성 및 아이템 애니메이션의 기본 클래스 역할을 하며, 공통 기능을 위한 함수들을 제공합니다.

이 클래스는 ` QVariant`에 대해 보간을 수행하지만, 보간된 값을 사용하는 작업은 하위 클래스에 맡깁니다. 현재 Qt는 Qt 속성을 애니메이션화하는 ` QPropertyAnimation`를 제공합니다. 이러한 속성을 애니메이션화하려면 ` QPropertyAnimation ` 클래스 설명을 참조하십시오.

그런 다음 setStartValue() 및 setEndValue()을 호출하여 속성의 시작값과 종료값을 설정하고, 마지막으로 start()을 호출하여 애니메이션을 시작할 수 있습니다. QVariantAnimation은 대상 객체의 속성을 보간하고 valueChanged()을 발생시킵니다. 현재 값의 변경에 반응하려면 updateCurrentValue() 가상 함수를 재구현하거나 해당 신호에 연결해야 합니다.

또한 시작값과 종료값 사이에 위치한 지정된 단계에서 값을 설정할 수도 있습니다. 그러면 보간은 지정된 단계에서 이러한 지점을 통과하게 됩니다. 시작값과 종료값은 0.0과 1.0의 키값으로 정의된다는 점에 유의하십시오.

QVariantAnimation이 값을 보간하는 방식에는 두 가지 방법이 있습니다. setEasingCurve()을 호출하여 이징 커브를 설정하고, setDuration()을 호출하여 지속 시간을 구성할 수 있습니다. 또한 QVariantAnimation의 서브클래스를 생성하고 가상 함수 interpolated()을 재구현하여 QVariant의 보간 방식을 변경할 수 있습니다.

QVariant를 Qt 속성으로 선언하고 싶지 않은 경우, QVariantAnimation의 서브클래스를 상속하는 것도 대안이 될 수 있습니다. 다만, 대부분의 경우 QVariant 를 속성으로 선언하는 것이 더 바람직하다는 점에 유의하십시오.

모든 QVariant 유형이 지원되는 것은 아닙니다. 다음은 현재 지원되는 QVariant 유형 목록입니다:

사용자 정의 유형을 포함한 다른 변형 유형(variant)을 보간해야 하는 경우, 해당 보간 기능을 직접 구현해야 합니다. 이를 위해 특정 유형에 대한 보간기(interpolator) 함수를 등록할 수 있습니다. 이 함수는 시작 값, 끝 값, 현재 진행률의 3가지 매개변수를 받습니다.

예시:

QVariant myColorInterpolator(const QColor&start, const QColor&end, qreal progress)
{
    // ...
    return QColor(/*...*/);
}
// ...
void someFunc()
{
    // ...
    qRegisterAnimationInterpolator<QColor>(myColorInterpolator);
   // ...
}

또 다른 방법은 interpolated()을 재구현하는 것으로, 이 함수는 보간 대상 값에 대한 보간 값을 반환합니다.

QPropertyAnimation, QAbstractAnimation 및 애니메이션 프레임워크도 참조하십시오 .

멤버 유형 문서

[alias] QVariantAnimation::KeyValue

이는 std::pair<qreal, QVariant>에 대한 typedef입니다.

QVariantAnimation::KeyValues

이것은 QList<KeyValue>에 대한 typedef입니다.

속성 설명서

[read-only] currentValue : QVariant

이 속성은 애니메이션의 현재 값을 저장합니다.

이 속성은 현재 값, 즉 진행 상황을 나타내는 현재 시간을 기준으로 start value 와 end value 사이의 보간된 값을 나타냅니다. 이 값 자체는 애니메이션이 실행되는 동안 반복적으로 호출되는 interpolated()에서 얻어집니다.

QVariantAnimation updateCurrentValue() 가상 함수는 현재 값이 변경될 때 호출됩니다. 이는 업데이트를 추적해야 하는 하위 클래스에 특히 유용합니다. 예를 들어, 는 이 함수를 사용하여 Qt QPropertyAnimation 속성을 애니메이션화합니다.

액세스 함수:

QVariant currentValue() const

Notifier 시그널:

void valueChanged(const QVariant &value)

startValue 및 endValue도 참조하십시오 .

[bindable] duration : int

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 애니메이션의 지속 시간을 나타냅니다.

이 속성은 애니메이션의 지속 시간을 밀리초 단위로 나타냅니다. 기본 지속 시간은 250밀리초입니다.

액세스 함수:

virtual int duration() const override
void setDuration(int msecs)

QAbstractAnimation::duration()도 참조하십시오 .

[bindable] easingCurve : QEasingCurve

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 애니메이션의 이징 곡선을 지정합니다.

이 속성은 애니메이션의 이징 곡선을 정의합니다. 기본적으로 선형 이징 곡선이 사용되며, 이는 선형 보간을 생성합니다. 다른 곡선들도 제공되는데, 예를 들어 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

이 속성은 애니메이션의 선택적 시작 값을 저장합니다.

이 속성은 애니메이션의 선택적 시작 값을 지정합니다. 이 속성을 생략하거나 시작 값으로 null QVariant 이 할당된 경우, 애니메이션이 시작될 때 애니메이션의 현재 끝 위치가 시작 위치로 사용됩니다.

액세스 함수:

QVariant startValue() const
void setStartValue(const QVariant &value)

endValue도 참조하십시오 .

멤버 함수 설명서

QVariantAnimation::QVariantAnimation(QObject *parent = nullptr)

QVariantAnimation 객체를 생성합니다. ` parent `는 ` QAbstractAnimation`의 생성자에 전달됩니다.

[virtual noexcept] QVariantAnimation::~QVariantAnimation()

애니메이션을 제거합니다.

[override virtual protected] bool QVariantAnimation::event(QEvent *event)

QAbstractAnimation::event(QEvent *event)를 재구현합니다.

[virtual protected] QVariant QVariantAnimation::interpolated(const QVariant &from, const QVariant &to, qreal progress) const

이 가상 함수는 progress 지점에서 변수 from 와 to 사이의 선형 보간값을 반환하며, 일반적으로 0과 1 사이의 값이 됩니다. QVariantAnimation 의 하위 클래스에서 이 함수를 재구현하여 자체 보간 알고리즘을 제공할 수 있습니다.

0보다 작거나 1보다 큰 값을 반환하는 QEasingCurve (예: QEasingCurve::InBack)에서 보간이 작동하려면, 해당 함수가 외삽을 수행할 수 있도록 해야 합니다. 데이터 유형의 의미론상 외삽이 허용되지 않는 경우, 이 함수는 이를 원활하게 처리해야 합니다.

클래스에서 Qt가 이미 지원하는 데이터형을 처리하려면 이 함수의 QVariantAnimation 구현체를 호출해야 합니다(지원되는 데이터형 목록은 QVariantAnimation 클래스 설명을 참조하십시오).

QEasingCurve도 참조하십시오 .

QVariant QVariantAnimation::keyValueAt(qreal step) const

지정된 step 에 대한 키 프레임 값을 반환합니다. 지정된 step 는 0에서 1 사이의 값이어야 합니다. step 에 대한 KeyValue 가 없는 경우, 무효한 QVariant 를 반환합니다.

keyValues() 및 setKeyValueAt()도 참조하십시오 .

QVariantAnimation::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 QVariantAnimation::KeyValues &keyValues)

현재의 키 프레임 집합을 지정된 keyValues 로 대체합니다. 키 프레임의 간격은 0에서 1 사이의 값이어야 합니다.

keyValues() 및 keyValueAt()도 참조하십시오 .

[override virtual protected] void QVariantAnimation::updateCurrentTime(int)

QAbstractAnimation::updateCurrentTime(int currentTime)를 재구현합니다.

[virtual protected] void QVariantAnimation::updateCurrentValue(const QVariant &value)

이 가상 함수는 애니메이션의 현재 값이 변경될 때마다 호출됩니다. ` value ` 인수는 새로운 현재 값입니다.

기본 클래스의 구현은 아무 작업도 수행하지 않습니다.

currentValue도 참조하십시오 .

[override virtual protected] void QVariantAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

QAbstractAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)를 재구현합니다.

[signal] void QVariantAnimation::valueChanged(const QVariant &value)

QVariantAnimation value 의 값이 변경될 때마다 이 신호를 발생시킵니다.

참고: 속성 currentValue 에 대한알림 신호입니다.

currentValue, startValue 및 endValue도 참조하십시오 .

관련 비회원

template <typename T> void qRegisterAnimationInterpolator(QVariant (*func)(const T &, const T &, qreal))

템플릿 유형 T 에 대한 사용자 정의 보간기 func 를 등록합니다. 보간기는 애니메이션이 생성되기 전에 등록되어야 합니다. 등록을 해제하고(기본 보간기를 사용하려면) func 를 nullptr 로 설정하십시오.

경고: Qt 내장 유형(예: int) 중 하나에 대해 사용자 정의 보간기를등록하면 , 나중에 생성될 해당 유형의 모든 애니메이션에 영향을 미칩니다. 이는 원치 않는 동작일 수 있습니다. 따라서 원하는 애니메이션을 모두 생성한 후에는 보간기를 기본값으로 재설정하는 것이 좋습니다.

참고: 이 함수는 스레드 안전합니다.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.