QAbstractAnimation Class

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

Header: #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

상세 설명

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

애니메이션의 진행률은 애니메이션 시작(0)부터 종료(duration())까지 밀리초 단위로 측정되는 현재 시간(currentLoopTime())으로 표시됩니다. 이 값은 애니메이션이 실행되는 동안 자동으로 업데이트됩니다. setCurrentTime ()로 직접 설정할 수도 있습니다.

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

애니메이션은 loopCount 속성을 설정하여 원하는 횟수만큼 반복할 수 있습니다. 애니메이션의 현재 시간이 duration()에 도달하면 현재 시간을 재설정하고 계속 실행합니다. 루프 횟수 1(기본값)은 애니메이션이 한 번만 실행됨을 의미합니다. 지속 시간이 -1이면 애니메이션이 중지될 때까지 실행되며 현재 시간이 무한대로 늘어납니다. 현재 시간이 duration()와 같고 애니메이션이 마지막 루프에 있으면 Stopped 상태가 입력되고 finished() 신호가 방출됩니다.

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

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

QVariantAnimation, QPropertyAnimation, QAnimationGroup, 애니메이션 프레임워크도참조하세요 .

멤버 유형 문서

enum QAbstractAnimation::DeletionPolicy

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

enum QAbstractAnimation::Direction

이 Enum은 Running 상태일 때 애니메이션의 방향을 설명합니다.

Constant설명
QAbstractAnimation::Forward0애니메이션의 현재 시간이 시간에 따라 증가합니다(즉, 0에서 끝/지속 시간으로 이동).
QAbstractAnimation::Backward1애니메이션의 현재 시간은 시간에 따라 감소합니다(즉, 끝/지속 시간에서 0을 향해 이동).

direction참조하세요 .

enum QAbstractAnimation::State

이 열거형은 애니메이션의 상태를 설명합니다.

Constant설명
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() 신호를 내보냅니다.

[bindable] currentTime : int

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

이 속성은 애니메이션의 현재 시간과 진행률을 보유합니다.

이 속성은 애니메이션의 현재 시간을 설명합니다. setCurrentTime을 호출하여 현재 시간을 변경하거나 start()를 호출하고 애니메이션을 실행하여 애니메이션이 진행됨에 따라 현재 시간을 자동으로 설정할 수 있습니다.

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

참고: 현재 시간에 다른 속성을 바인딩할 수 있지만 바인딩을 설정하는 것은 권장하지 않습니다. 애니메이션이 진행됨에 따라 currentTime이 자동으로 업데이트되어 바인딩이 취소됩니다.

loopCountcurrentLoopTime()도 참조하세요 .

[bindable] direction : Direction

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

이 속성은 애니메이션이 Running 상태일 때 애니메이션의 방향을 유지합니다.

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

기본적으로 이 속성은 Forward 로 설정됩니다.

[read-only] duration : const int

이 속성은 애니메이션의 지속 시간을 보유합니다.

길이가 -1이면 길이가 정의되지 않았음을 의미합니다. 이 경우 loopCount 은 무시됩니다.

함수에 액세스합니다:

virtual int duration() const = 0

[bindable] loopCount : int

참고: 이 프로퍼티는 QProperty 바인딩을 지원합니다.

이 속성은 애니메이션의 루프 횟수를 보유합니다.

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

[bindable read-only] state : State

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

애니메이션의 상태.

이 속성은 애니메이션의 현재 상태를 설명합니다. 애니메이션 상태가 변경되면 QAbstractAnimation stateChanged () 신호를 보냅니다.

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

멤버 함수 문서

QAbstractAnimation::QAbstractAnimation(QObject *parent = nullptr)

QAbstractAnimation 베이스 클래스를 생성하고 QObject 의 생성자에 parent 을 전달합니다.

QVariantAnimationQAnimationGroup도 참조하세요 .

[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 인 경우 지속 시간은 모든 애니메이션의 지속 시간의 합이 됩니다.

참고: 속성 지속 시간에 대한 게터 함수.

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()는 일시 중지됨을 반환합니다. resume () 또는 start()가 호출될 때까지 currentTime 값은 변경되지 않습니다. 현재 시간에서 계속하려면 resume()를 호출합니다.

start(), state() 및 resume()도 참조하세요 .

[slot] void QAbstractAnimation::resume()

일시 중지된 애니메이션을 다시 시작합니다. 애니메이션이 재개되면 resumed() 및 stateChanged() 신호를 내보냅니다. 현재 시간은 변경되지 않습니다.

start(), pause() 및 state()도 참조하세요 .

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

paused 이 참이면 애니메이션이 일시 중지됩니다. paused 이 거짓이면 애니메이션이 다시 시작됩니다.

state(), pause() 및 resume()도 참조하세요 .

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

애니메이션을 시작합니다. policy 인수는 애니메이션이 완료되면 삭제할지 여부를 나타냅니다. 애니메이션이 시작되면 stateChanged() 신호가 전송되고 state()는 실행 중을 반환합니다. 제어가 이벤트 루프에 도달하면 애니메이션이 자체적으로 실행되어 애니메이션이 진행됨에 따라 주기적으로 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()은 중지됨을 반환합니다. 현재 시간은 변경되지 않습니다.

애니메이션이 끝에 도달한 후 자체적으로 멈추는 경우(예: currentLoopTime() == duration() 및 currentLoop() > loopCount() - 1), finished() 신호가 전송됩니다.

start() 및 state()도 참조하세요 .

int QAbstractAnimation::totalDuration() const

루프 횟수를 포함한 애니메이션의 총 유효 기간을 반환합니다.

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()도 참조하세요 .

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