QTimeLine Class

QTimeLine 클래스는 애니메이션 제어를 위한 타임라인을 제공합니다. 더 보기...

Header: #include <QTimeLine>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
상속합니다: QObject

공용 유형

enum Direction { Forward, Backward }
enum State { NotRunning, Paused, Running }

속성

공용 기능

QTimeLine(int duration = 1000, QObject *parent = nullptr)
virtual ~QTimeLine()
QBindable<int> bindableCurrentTime()
QBindable<QTimeLine::Direction> bindableDirection()
QBindable<int> bindableDuration()
QBindable<QEasingCurve> bindableEasingCurve()
QBindable<int> bindableLoopCount()
QBindable<int> bindableUpdateInterval()
int currentFrame() const
int currentTime() const
qreal currentValue() const
QTimeLine::Direction direction() const
int duration() const
QEasingCurve easingCurve() const
int endFrame() const
int frameForTime(int msec) const
int loopCount() const
void setDirection(QTimeLine::Direction direction)
void setDuration(int duration)
void setEasingCurve(const QEasingCurve &curve)
void setEndFrame(int frame)
void setFrameRange(int startFrame, int endFrame)
void setLoopCount(int count)
void setStartFrame(int frame)
void setUpdateInterval(int interval)
int startFrame() const
QTimeLine::State state() const
int updateInterval() const
virtual qreal valueForTime(int msec) const

공용 슬롯

void resume()
void setCurrentTime(int msec)
void setPaused(bool paused)
void start()
void stop()
void toggleDirection()

신호

void finished()
void frameChanged(int frame)
void stateChanged(QTimeLine::State newState)
void valueChanged(qreal value)

재구현된 보호 기능

virtual void timerEvent(QTimerEvent *event) override

상세 설명

슬롯을 주기적으로 호출하여 GUI 컨트롤에 애니메이션을 적용하는 데 가장 일반적으로 사용됩니다. 타임라인의 생성자에 기간을 밀리초 단위로 전달하여 타임라인을 구성할 수 있습니다. 타임라인의 지속 시간은 애니메이션이 실행될 시간을 나타냅니다. 그런 다음 setFrameRange()를 호출하여 적절한 프레임 범위를 설정합니다. 마지막으로 frameChanged() 신호를 애니메이션을 적용하려는 위젯의 적절한 슬롯에 연결합니다(예: QProgressBarsetValue()). start () 호출을 계속하면 QTimeLine이 실행 중 상태가 되고 일정한 간격으로 frameChanged() 신호를 내보내기 시작하여 위젯의 연결된 속성 값이 프레임 범위의 하단에서 상단으로 일정한 비율로 증가합니다. setUpdateInterval ()를 호출하여 업데이트 간격을 지정할 수 있습니다. 완료되면 QTimeLine은 NotRunning 상태가 되고 finished()를 반환합니다.

예시:

...
progressBar = new QProgressBar(this);
progressBar->setRange(0, 100);

// Construct a 1-second timeline with a frame range of 0 - 100
QTimeLine *timeLine = new QTimeLine(1000, this);
timeLine->setFrameRange(0, 100);
connect(timeLine, &QTimeLine::frameChanged, progressBar, &QProgressBar::setValue);

// Clicking the push button will start the progress bar animation
pushButton = new QPushButton(tr("Start animation"), this);
connect(pushButton, &QPushButton::clicked, timeLine, &QTimeLine::start);
...

기본적으로 타임라인은 처음부터 끝까지 한 번만 실행되며, 이 경우 처음부터 다시 시작하려면 start()를 다시 호출해야 합니다. 타임라인을 반복하려면 setLoopCount()를 호출하여 타임라인이 완료되기 전에 실행해야 하는 횟수를 전달하면 됩니다. setDirection ()를 호출하여 방향을 변경하여 타임라인이 뒤로 실행되도록 할 수도 있습니다. 또한 setPaused()를 호출하여 타임라인이 실행되는 동안 일시 중지하거나 일시 중지 해제할 수 있습니다. 대화형 제어를 위해 타임라인의 시간 위치를 직접 설정하는 setCurrentTime() 함수가 제공됩니다. NotRunning 상태(예: valueChanged() 신호에 연결된 QSlider)에서 가장 유용하지만, 이 함수는 언제든지 호출할 수 있습니다.

프레임 인터페이스는 표준 위젯에 유용하지만, QTimeLine은 모든 유형의 애니메이션을 제어하는 데 사용할 수 있습니다. QTimeLine의 핵심은 주어진 시간 동안 0에서 1 사이의 값을 생성하는 valueForTime() 함수에 있습니다. 이 값은 일반적으로 애니메이션의 단계를 설명하는 데 사용되며, 0은 애니메이션의 첫 번째 단계이고 1은 마지막 단계입니다. 실행 시 QTimeLine은 valueForTime()를 호출하고 valueChanged()를 방출하여 0에서 1 사이의 값을 생성합니다. 기본적으로 valueForTime()는 보간 알고리즘을 적용하여 이러한 값을 생성합니다. setEasingCurve ()를 호출하여 미리 정의된 타임라인 알고리즘 세트 중에서 선택할 수 있습니다.

기본적으로 QTimeLine은 QEasingCurve::InOutSine 을 사용하며, 이 값은 느리게 증가한 다음 꾸준히 증가하여 최종적으로 느리게 증가하는 값을 제공합니다. 사용자 지정 타임라인의 경우 valueForTime()를 다시 구현할 수 있으며, 이 경우 QTimeLine의 easingCurve 속성은 무시됩니다.

QProgressBarQProgressDialog참조하세요 .

멤버 유형 문서

enum QTimeLine::Direction

이 열거형은 Running 상태일 때 타임라인의 방향을 설명합니다.

Constant설명
QTimeLine::Forward0타임라인의 현재 시간이 시간에 따라 증가합니다(즉, 0에서 끝/기간을 향해 이동).
QTimeLine::Backward1타임라인의 현재 시간은 시간에 따라 감소합니다(즉, 종료/기간에서 0을 향해 이동).

setDirection()도 참조하세요 .

enum QTimeLine::State

이 열거형은 타임라인의 상태를 설명합니다.

Constant설명
QTimeLine::NotRunning0타임라인이 실행 중이 아닙니다. 초기 상태는 QTimeLine 이며, 완료되면 QTimeLine 상태가 다시 나타납니다. 현재 시간, 프레임 및 값은 setCurrentTime()를 호출하거나 start()를 호출하여 타임라인을 시작할 때까지 변경되지 않습니다.
QTimeLine::Paused1타임라인이 일시 중지됩니다(즉, 일시적으로 일시 중단됨). setPaused (거짓)을 호출하면 타임라인 활동이 재개됩니다.
QTimeLine::Running2타임라인이 실행 중입니다. 제어가 이벤트 루프에 있는 동안 QTimeLine 는 정기적으로 현재 시간을 업데이트하고 적절한 경우 valueChanged() 및 frameChanged()를 내보냅니다.

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

속성 문서

[bindable] currentTime : int

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

이 속성은 타임라인의 현재 시간을 보유합니다.

QTimeLine 상태가 실행 중이면 이 값은 타임라인의 기간과 방향에 따라 지속적으로 업데이트됩니다. 그렇지 않으면 stop()가 마지막으로 호출되었을 때의 현재 값 또는 setCurrentTime()으로 설정된 값입니다.

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

기본적으로 이 속성의 값은 0입니다.

[bindable] direction : Direction

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

이 속성은 QTimeLine 상태가 Running 상태일 때 타임라인의 방향을 유지합니다.

이 방향은 시간이 0에서 타임라인 기간을 향해 이동하는지, 아니면 start()가 호출된 후 기간의 값에서 0을 향해 이동하는지를 나타냅니다.

방향 바인딩은 setDirection() 뿐만 아니라 toggleDirection()에 의해서도 제거됩니다.

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

[bindable] duration : int

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

이 속성은 타임라인의 총 지속 시간(밀리초)을 보유합니다.

기본적으로 이 값은 1000(즉, 1초)이지만 QTimeLine 의 생성자에 기간을 전달하거나 setDuration()을 호출하여 이 값을 변경할 수 있습니다. 지속 시간은 0보다 커야 합니다.

참고: 기간을 변경해도 현재 시간이 0 또는 새 기간으로 재설정되지는 않습니다. 또한 원하는 값으로 setCurrentTime()를 호출해야 합니다.

[bindable] easingCurve : QEasingCurve

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

타임라인에서 사용할 완화 곡선을 지정합니다. valueForTime ()가 다시 구현되면 이 값은 무시됩니다.

valueForTime()도 참조하세요 .

[bindable] loopCount : int

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

이 속성은 타임라인이 완료되기 전에 반복해야 하는 횟수를 보유합니다.

루프 횟수가 0이면 타임라인이 영원히 반복된다는 뜻입니다.

기본적으로 이 속성의 값은 1입니다.

[bindable] updateInterval : int

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

이 속성은 QTimeLine 가 현재 시간을 업데이트할 때마다 밀리초 단위로 시간을 보유합니다.

현재 시간을 업데이트할 때 QTimeLine 는 현재 값이 변경된 경우 valueChanged(), 프레임이 변경된 경우 frameChanged()를 전송합니다.

기본적으로 간격은 40ms이며, 이는 초당 25회의 업데이트 속도에 해당합니다.

멤버 함수 문서

[explicit] QTimeLine::QTimeLine(int duration = 1000, QObject *parent = nullptr)

duration 밀리초 길이의 타임라인을 생성합니다. parentQObject 의 생성자에게 전달됩니다. 기본 기간은 1000밀리초입니다.

[virtual noexcept] QTimeLine::~QTimeLine()

타임라인을 삭제합니다.

int QTimeLine::currentFrame() const

현재 시간에 해당하는 프레임을 반환합니다.

currentTime(), frameForTime() 및 setFrameRange()도 참조하세요 .

qreal QTimeLine::currentValue() const

현재 시간에 해당하는 값을 반환합니다.

valueForTime() 및 currentFrame()도 참조하세요 .

int QTimeLine::endFrame() const

타임라인의 끝에 해당하는 프레임인 종료 프레임(즉, 현재 값이 1인 프레임)을 반환합니다.

setEndFrame() 및 setFrameRange()도 참조하세요 .

[private signal] void QTimeLine::finished()

이 신호는 QTimeLine 이 완료될 때(즉, 타임라인의 끝에 도달할 때) 발생하며 반복되지 않습니다.

참고: 이 신호는 비공개 신호입니다. 신호 연결에서 사용할 수 있지만 사용자가 발신할 수는 없습니다.

[private signal] void QTimeLine::frameChanged(int frame)

QTimeLineRunning 상태일 때 일정한 간격으로 이 신호를 내보내지만 현재 프레임이 변경된 경우에만 이 신호를 내보냅니다. frame 은 현재 프레임 번호입니다.

참고: 이 신호는 비공개 신호입니다. 신호 연결에서 사용할 수 있지만 사용자가 방출할 수는 없습니다.

QTimeLine::setFrameRange() 및 QTimeLine::updateInterval참조하세요 .

int QTimeLine::frameForTime(int msec) const

시간에 해당하는 프레임을 반환합니다 msec. 이 값은 valueForTime()에서 반환한 값을 기준으로 시작 및 종료 프레임의 선형 보간을 사용하여 계산됩니다.

valueForTime() 및 setFrameRange()도 참조하세요 .

[slot] void QTimeLine::resume()

현재 시간부터 타임라인을 다시 시작합니다. QTimeLine 이벤트 루프에 들어가면 현재 시간, 프레임 및 값을 일정한 간격으로 업데이트합니다.

start()와 달리 이 함수는 다시 시작하기 전에 타임라인을 다시 시작하지 않습니다.

start(), updateInterval(), frameChanged() 및 valueChanged()도 참조하세요 .

void QTimeLine::setEndFrame(int frame)

타임라인의 끝에 해당하는 프레임(즉, 현재 값이 1인 프레임)인 끝 프레임을 frame 으로 설정합니다.

endFrame(), startFrame() 및 setFrameRange()도 참조하세요 .

void QTimeLine::setFrameRange(int startFrame, int endFrame)

타임라인의 프레임 카운터를 startFrame 에서 시작하고 endFrame 에서 끝내도록 설정합니다. 각 시간 값에 대해 currentFrame() 또는 frameForTime()를 호출하면 valueForTime()의 반환값을 사용하여 보간하여 QTimeLine 에서 해당 프레임을 찾습니다.

실행 중 상태일 때 QTimeLine 는 프레임이 변경되면 frameChanged() 신호도 전송합니다.

startFrame(), endFrame(), start() 및 currentFrame()도 참조하세요 .

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

paused 이 참이면 타임라인이 일시 중지되어 QTimeLine 이 일시 중지 상태가 됩니다. start () 또는 setPaused(false)가 호출될 때까지 업데이트 알림이 표시되지 않습니다. paused 가 false이면 타임라인이 재개되어 중단된 지점부터 계속됩니다.

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

void QTimeLine::setStartFrame(int frame)

타임라인의 시작에 해당하는 프레임(즉, 현재 값이 0인 프레임)인 시작 프레임을 frame 으로 설정합니다.

startFrame(), endFrame() 및 setFrameRange()도 참조하세요 .

[slot] void QTimeLine::start()

QTimeLine 은 실행 중 상태가 되고 이벤트 루프에 들어가면 현재 시간, 프레임 및 값을 일정한 간격으로 업데이트합니다. 기본 간격은 40ms(즉, 초당 25회)입니다. setUpdateInterval ()를 호출하여 업데이트 간격을 변경할 수 있습니다.

타임라인은 0번 위치에서 시작하거나 뒤로 이동하는 경우 끝에서 시작됩니다. 중지된 타임라인을 다시 시작하지 않고 다시 시작하려면 resume()를 호출하면 됩니다.

resume(), updateInterval(), frameChanged() 및 valueChanged()도 참조하세요 .

int QTimeLine::startFrame() const

타임라인의 시작에 해당하는 프레임(즉, 현재 값이 0인 프레임)인 시작 프레임을 반환합니다.

setStartFrame() 및 setFrameRange()도 참조하세요 .

QTimeLine::State QTimeLine::state() const

타임라인의 상태를 반환합니다.

start(), setPaused() 및 stop()도 참조하세요 .

[private signal] void QTimeLine::stateChanged(QTimeLine::State newState)

이 신호는 QTimeLine 의 상태가 변경될 때마다 전송됩니다. 새 상태는 newState 입니다.

참고: 이 신호는 비공개 신호입니다. 신호 연결에서 사용할 수 있지만 사용자가 발신할 수는 없습니다.

[slot] void QTimeLine::stop()

타임라인을 중지하여 QTimeLine 상태가 NotRunning 상태가 되도록 합니다.

start()도 참조하세요 .

[override virtual protected] void QTimeLine::timerEvent(QTimerEvent *event)

다시 구현합니다: QObject::timerEvent(Q타이머이벤트 *이벤트).

[slot] void QTimeLine::toggleDirection()

타임라인의 방향을 전환합니다. 방향이 앞으로인 경우 뒤로가 되고, 그 반대의 경우도 마찬가지입니다.

direction 의 기존 바인딩은 제거됩니다.

setDirection()도 참조하세요 .

[private signal] void QTimeLine::valueChanged(qreal value)

QTimeLineRunning 상태일 때 일정한 간격으로 이 신호를 보내지만 현재 값이 변경된 경우에만 이 신호를 보냅니다. value 은 현재 값입니다. value 은 0.0에서 1.0 사이의 숫자입니다.

참고: 이 신호는 비공개 신호입니다. 신호 연결에서 사용할 수 있지만 사용자가 방출할 수는 없습니다.

QTimeLine::setDuration(), QTimeLine::valueForTime() 및 QTimeLine::updateInterval참조하세요 .

[virtual] qreal QTimeLine::valueForTime(int msec) const

msec 에 대한 타임라인 값을 반환합니다. 반환되는 값은 커브 모양에 따라 다르며 항상 0에서 1 사이입니다. msec 이 0이면 기본 구현은 항상 0을 반환합니다.

타임라인에 사용자 지정 커브 모양을 제공하려면 이 함수를 다시 구현하세요.

easingCurveframeForTime()도 참조하세요 .

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