이 페이지에서

QAbstractAnimation Class

QAbstractAnimation 클래스는 모든 애니메이션의 기반이 됩니다. 더 보기...

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

QAnimationGroup, QPauseAnimation 및 QVariantAnimation

공개 유형

enum DeletionPolicy { KeepWhenStopped, DeleteWhenStopped }
enum Direction { Forward, Backward }
enum State { Stopped, Paused, Running }

속성

공개 함수

QAbstractAnimation(QObject *parent = nullptr)
virtual ~QAbstractAnimation()
QBindable<int> bindableCurrentLoop() const
QBindable<int> bindableCurrentTime()
QBindable<QAbstractAnimation::Direction> bindableDirection()
QBindable<int> bindableLoopCount()
QBindable<QAbstractAnimation::State> bindableState() const
int currentLoop() const
int currentLoopTime() const
int currentTime() const
QAbstractAnimation::Direction direction() const
virtual int duration() const = 0
QAnimationGroup *group() const
int loopCount() const
void setDirection(QAbstractAnimation::Direction direction)
void setLoopCount(int loopCount)
QAbstractAnimation::State state() const
int totalDuration() const

공개 슬롯

void pause()
void resume()
void setCurrentTime(int msecs)
void setPaused(bool paused)
void start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped)
void stop()

신호

void currentLoopChanged(int currentLoop)
void directionChanged(QAbstractAnimation::Direction newDirection)
void finished()
void stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

보호된 함수

virtual void updateCurrentTime(int currentTime) = 0
virtual void updateDirection(QAbstractAnimation::Direction direction)
virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

재구현된 보호된 함수

virtual bool event(QEvent *event) override

상세 설명

이 클래스는 모든 애니메이션이 공유하는 기능을 위한 함수들을 정의합니다. 이 클래스를 상속함으로써, 나머지 애니메이션 프레임워크에 통합되는 사용자 정의 애니메이션을 만들 수 있습니다.

애니메이션의 진행 상황은 현재 시간(currentLoopTime())으로 표시되며, 이는 애니메이션 시작 시점(0)부터 끝(duration())까지 밀리초 단위로 측정됩니다. 이 값은 애니메이션이 실행되는 동안 자동으로 업데이트됩니다. 또한 setCurrentTime()을 사용하여 직접 설정할 수도 있습니다.

애니메이션은 언제든지 State 열거형에 정의된 세 가지 상태( Running, Stopped 또는 Paused) 중 하나를 가집니다. 현재 상태는 start(), stop(), pause() 또는 resume()를 호출하여 변경할 수 있습니다. 애니메이션은 시작될 때마다 항상 current time 을 초기화합니다. 일시 정지된 경우, 재개되면 동일한 현재 시간으로 계속 진행됩니다. 애니메이션이 중지되면 재개할 수는 없지만, (다시 시작될 때까지) 현재 시간을 유지합니다. QAbstractAnimation은 상태가 변경될 때마다 stateChanged()을 발생시킵니다.

loopCount 속성을 설정하면 애니메이션을 원하는 횟수만큼 반복할 수 있습니다. 애니메이션의 현재 시간이 duration()에 도달하면, 현재 시간이 초기화되고 실행이 계속됩니다. 반복 횟수가 1(기본값)인 경우, 애니메이션은 한 번만 실행됩니다. 지속 시간(duration)이 -1이면 애니메이션이 중지될 때까지 실행되며, 현재 시간은 무한히 증가합니다. 현재 시간이 duration()와 같아지고 애니메이션이 마지막 루프에 도달하면, Stopped 상태가 시작되고 finished() 신호가 발산됩니다.

QAbstractAnimation은 하위 클래스가 애니메이션의 진행 상황을 추적하는 데 사용하는 순수 가상 함수인 duration()와 updateCurrentTime()를 제공합니다. duration() 함수를 사용하면 (앞서 설명한 바와 같이) 애니메이션의 지속 시간을 보고할 수 있습니다. 애니메이션 프레임워크는 현재 시간이 변경되면 updateCurrentTime()를 호출합니다. 이 함수를 재구현함으로써 애니메이션의 진행 상황을 추적할 수 있습니다. 이 함수의 호출 간격이나 호출 횟수는 정의되어 있지 않다는 점에 유의하십시오. 다만, 일반적으로 초당 60회 업데이트됩니다.

updateState()을 재구현하면 애니메이션의 상태 변화를 추적할 수 있으며, 이는 시간에 의해 제어되지 않는 애니메이션에 특히 유용합니다.

QVariantAnimation, QPropertyAnimation, QAnimationGroup 및 ‘애니메이션 프레임워크’ 항목도 참조하십시오 .

멤버 유형 문서

enum QAbstractAnimation::DeletionPolicy

상수값설명
QAbstractAnimation::KeepWhenStopped0애니메이션이 중지되어도 삭제되지 않습니다.
QAbstractAnimation::DeleteWhenStopped1애니메이션이 중지되면 자동으로 삭제됩니다.

enum QAbstractAnimation::Direction

이 열거형은 ‘ Running ’ 상태일 때의 애니메이션 방향을 나타냅니다.

상수값설명
QAbstractAnimation::Forward0애니메이션의 현재 시간은 시간이 지남에 따라 증가합니다(즉, 0에서 시작하여 끝/지속 시간 쪽으로 이동합니다).
QAbstractAnimation::Backward1애니메이션의 현재 시간이 시간이 지남에 따라 증가합니다(즉, 끝/지속 시간에서 0을 향해 이동합니다).

direction도 참조하십시오 .

enum QAbstractAnimation::State

이 열거형은 애니메이션의 상태를 나타냅니다.

상수값설명
QAbstractAnimation::Stopped0애니메이션이 실행 중이 아닙니다. 이는 ` QAbstractAnimation`의 초기 상태이며, 완료되면 ` QAbstractAnimation ` 상태로 다시 돌아갑니다. ` setCurrentTime()`가 호출되거나 ` start()`를 호출하여 애니메이션이 시작될 때까지 현재 시간은 변경되지 않습니다.
QAbstractAnimation::Paused1애니메이션이 일시 정지(즉, 일시적으로 중단)된 상태입니다. resume()를 호출하면 애니메이션이 재개됩니다.
QAbstractAnimation::Running2애니메이션이 실행 중입니다. 제어권이 이벤트 루프에 있는 동안, QAbstractAnimation 는 정기적인 간격으로 현재 시간을 업데이트하며, 적절한 시점에 updateCurrentTime()를 호출합니다.

state() 및 stateChanged()도 참조하십시오 .

속성 설명서

[bindable read-only] currentLoop : int

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

이 속성은 애니메이션의 현재 루프 번호를 저장합니다.

이 속성은 애니메이션의 현재 루프를 나타냅니다. 기본적으로 애니메이션의 루프 횟수는 1이므로 현재 루프는 항상 0입니다. 루프 횟수가 2이고 애니메이션이 지속 시간을 초과하여 실행될 경우, 자동으로 되감기되어 현재 시간 0, 현재 루프 1에서 다시 시작되며, 이 과정이 반복됩니다.

현재 루프가 변경되면 QAbstractAnimation 는 ` currentLoopChanged()` 신호를 발생시킵니다.

액세스 함수:

int currentLoop() const

알림 신호:

void currentLoopChanged(int currentLoop)

[bindable] currentTime : int

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

이 속성은 애니메이션의 현재 시간과 진행 상황을 저장합니다.

이 속성은 애니메이션의 현재 시간을 나타냅니다. setCurrentTime()을 호출하여 현재 시간을 변경할 수 있으며, start()을 호출하여 애니메이션을 실행하면 애니메이션이 진행됨에 따라 현재 시간이 자동으로 설정됩니다.

애니메이션의 현재 시간은 0에서 시작하여 totalDuration()에서 끝납니다.

참고: currentTime에 다른 속성을 바인딩할수는 있지만, 바인딩을 설정하는 것은 권장되지 않습니다. 애니메이션이 진행됨에 따라 currentTime이 자동으로 업데이트되어 바인딩이 해제되기 때문입니다.

관련 함수:

int currentTime() const
void setCurrentTime(int msecs)

loopCount 및 currentLoopTime()도 참조하십시오 .

[bindable] direction : Direction

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

이 속성은 애니메이션이 ' Running ' 상태에 있을 때의 방향을 나타냅니다.

이 방향은 시간이 0에서 애니메이션 지속 시간 쪽으로 이동하는지, 아니면 start()이 호출된 후 지속 시간의 값에서 0 쪽으로 이동하는지를 나타냅니다.

기본적으로 이 속성은 Forward 로 설정되어 있습니다.

액세스 함수:

QAbstractAnimation::Direction direction() const
void setDirection(QAbstractAnimation::Direction direction)

알림 신호:

void directionChanged(QAbstractAnimation::Direction newDirection)

[read-only] duration : int

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

지속 시간이 -1인 경우, 지속 시간이 정의되지 않았음을 의미합니다. 이 경우 ` loopCount `는 무시됩니다.

액세스 함수:

virtual int duration() const = 0

[bindable] loopCount : int

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

이 속성은 애니메이션의 반복 횟수를 저장합니다.

이 속성은 애니메이션의 반복 횟수를 정수 값으로 나타냅니다. 기본적으로 이 값은 1이며, 이는 애니메이션이 한 번만 실행된 후 중지됨을 의미합니다. 이 값을 변경하면 애니메이션을 여러 번 반복할 수 있습니다. 값을 0으로 설정하면 애니메이션이 전혀 실행되지 않으며, -1로 설정하면 중지될 때까지 애니메이션이 무한히 반복됩니다. 지속 시간이 정의되지 않은 애니메이션에서는 반복이 지원되지 않습니다. 이 경우 애니메이션은 한 번만 실행됩니다.

액세스 함수:

int loopCount() const
void setLoopCount(int loopCount)

[bindable read-only] state : State

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

애니메이션의 상태.

이 속성은 애니메이션의 현재 상태를 나타냅니다. 애니메이션 상태가 변경되면 ` QAbstractAnimation `는 ` stateChanged()` 신호를 발생시킵니다.

참고: 상태 업데이트로 인해 currentTime 속성이 업데이트될 수 있으며, 이로 인해 바인딩이 취소될 수 있습니다. 따라서 애니메이션 상태가 변경될 것으로 예상되는 경우, currentTime 속성에 바인딩을 설정할 때 주의하십시오.

액세스 함수:

QAbstractAnimation::State state() const

Notifier 시그널:

void stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

멤버 함수 설명서

QAbstractAnimation::QAbstractAnimation(QObject *parent = nullptr)

QAbstractAnimation 기본 클래스를 생성하고, parent 를 QObject 의 생성자에 전달합니다.

QVariantAnimation 및 QAnimationGroup도 참조하십시오 .

[virtual noexcept] QAbstractAnimation::~QAbstractAnimation()

실행 중인 애니메이션이 있으면 중지한 다음, ` QAbstractAnimation`를 소멸시킵니다. 해당 애니메이션이 ` QAnimationGroup`의 일부인 경우, 소멸되기 전에 자동으로 제거됩니다.

[signal] void QAbstractAnimation::currentLoopChanged(int currentLoop)

QAbstractAnimation 전류 루프가 변경될 때마다 이 신호를 발생시킵니다. currentLoop 는 전류 루프입니다.

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

currentLoop() 및 loopCount()도 참조하십시오 .

int QAbstractAnimation::currentLoopTime() const

현재 루프 내의 현재 시간을 반환합니다. 값은 0부터 duration()까지일 수 있습니다.

duration() 및 currentTime도 참조하십시오 .

[signal] void QAbstractAnimation::directionChanged(QAbstractAnimation::Direction newDirection)

QAbstractAnimation 방향 변경 시마다 이 신호를 발신합니다. ` newDirection `는 새로운 방향입니다.

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

direction도 참조하십시오 .

[pure virtual] int QAbstractAnimation::duration() const

이 순수 가상 함수는 애니메이션의 지속 시간을 반환하며, ` QAbstractAnimation `가 현재 시간을 얼마나 오랫동안 업데이트해야 하는지를 정의합니다. 이 지속 시간은 로컬이며, 루프 횟수는 포함되지 않습니다.

반환값이 -1인 경우, 애니메이션에 정의된 지속 시간이 없음을 나타내며, 애니메이션은 중지될 때까지 무한히 실행되어야 합니다. 이는 시간에 의해 제어되지 않는 애니메이션이나 지속 시간을 쉽게 예측할 수 없는 경우(예: 게임 내 이벤트 기반 오디오 재생)에 유용합니다.

애니메이션이 병렬형( QAnimationGroup)인 경우, 지속 시간은 해당 애니메이션에 포함된 모든 애니메이션 중 가장 긴 지속 시간이 됩니다. 애니메이션이 순차형( QAnimationGroup)인 경우, 지속 시간은 해당 애니메이션에 포함된 모든 애니메이션의 지속 시간의 합이 됩니다.

참고: duration 속성에 대한게터 함수입니다.

loopCount도 참조하십시오 .

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

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

[signal] void QAbstractAnimation::finished()

QAbstractAnimation 애니메이션이 중지되고 끝까지 진행된 후에 이 신호를 발신합니다.

이 신호는 ` stateChanged()` 호출 후 발생합니다.

stateChanged()도 참조하십시오 .

QAnimationGroup *QAbstractAnimation::group() const

이 애니메이션이 ‘ QAnimationGroup ’의 일부인 경우, 이 함수는 해당 그룹에 대한 포인터를 반환하고, 그렇지 않은 경우 ‘ nullptr ’를 반환합니다.

QAnimationGroup::addAnimation()도 참조하십시오 .

[slot] void QAbstractAnimation::pause()

애니메이션을 일시 정지합니다. 애니메이션이 일시 정지된 상태에서 state()를 호출하면 Paused가 반환됩니다. currentTime 의 값은 resume() 또는 start()가 호출될 때까지 변경되지 않습니다. 현재 시점부터 계속 진행하려면 resume()를 호출하십시오.

start(), state() 및 resume()도 참조하십시오 .

[slot] void QAbstractAnimation::resume()

일시 중지된 애니메이션을 다시 시작합니다. 애니메이션이 다시 시작되면 stateChanged() 신호를 발산합니다. currentTime 속성은 변경되지 않습니다.

start(), pause(), state()도 참조하십시오 .

[slot] void QAbstractAnimation::setPaused(bool paused)

paused 가 true인 경우 애니메이션이 일시 중지됩니다. paused 가 false인 경우 애니메이션이 재개됩니다.

state(), pause(), resume()도 참조하십시오 .

[slot] void QAbstractAnimation::start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped)

애니메이션을 시작합니다. ` policy ` 인수는 애니메이션이 완료되었을 때 삭제할지 여부를 지정합니다. 애니메이션이 시작되면 ` stateChanged()` 신호가 발생하며, ` state()`는 `Running`을 반환합니다. 제어권이 이벤트 루프로 넘어가면 애니메이션은 자동으로 실행되며, 진행됨에 따라 주기적으로 ` updateCurrentTime()`를 호출합니다.

애니메이션이 현재 중지된 상태이거나 이미 끝까지 진행된 경우, start()를 호출하면 애니메이션이 되감겨 처음부터 다시 시작됩니다. 애니메이션이 끝까지 도달하면 애니메이션이 중지되거나, 루프 레벨이 1보다 큰 경우 되감겨 처음부터 계속 진행됩니다.

애니메이션이 이미 실행 중이라면, 이 함수는 아무 작업도 수행하지 않습니다.

stop() 및 state()도 참조하십시오 .

[signal] void QAbstractAnimation::stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)

QAbstractAnimation 애니메이션의 상태가 ` oldState `에서 ` newState`로 변경될 때마다 이 신호를 발생시킵니다. 이 신호는 가상 함수 ` updateState()`가 호출된 후에 발생합니다.

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

updateState()도 참조하십시오 .

[slot] void QAbstractAnimation::stop()

애니메이션을 중지합니다. 애니메이션이 중지되면 stateChanged() 신호를 발생시키고, state()은 Stopped를 반환합니다. 현재 시간은 변경되지 않습니다.

애니메이션이 끝까지 진행된 후 스스로 중지되는 경우(즉, currentLoopTime() == duration()이고 currentLoop() > loopCount() - 1인 경우), finished() 신호가 발생합니다.

start() 및 state()도 참조하십시오 .

int QAbstractAnimation::totalDuration() const

루프 횟수를 포함하여 애니메이션의 총 재생 시간과 유효 재생 시간을 반환합니다.

참고: 루프 횟수가 매우많거나 , 단일 루프의 지속 시간이 너무 긴경우 , 총 지속 시간이 int 에 들어가지 않을 정도로 커질 수 있습니다. 이 경우 값은 INT_MAX 로 포화 처리됩니다.

duration() 및 currentTime도 참조하십시오 .

[pure virtual protected] void QAbstractAnimation::updateCurrentTime(int currentTime)

이 순수 가상 함수는 애니메이션의 currentTime 가 변경될 때마다 호출됩니다.

updateState()도 참조하십시오 .

[virtual protected] void QAbstractAnimation::updateDirection(QAbstractAnimation::Direction direction)

이 가상 함수는 애니메이션의 방향이 변경될 때 ` QAbstractAnimation `에 의해 호출됩니다. ` direction ` 인수는 새로운 방향입니다.

setDirection() 및 direction()도 참조하십시오 .

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

이 가상 함수는 애니메이션 상태가 ` oldState `에서 ` newState`로 변경될 때 ` QAbstractAnimation `에 의해 호출됩니다.

start(), stop(), pause(), resume()도 참조하십시오 .

© 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.