QTimeLine Class
QTimeLine 클래스는 애니메이션을 제어하기 위한 타임라인을 제공합니다. 더 보기...
| 헤더: | #include <QTimeLine> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| 상속: | QObject |
- 상속받은 멤버를 포함한 모든 멤버 목록
- QTimeLine은 애니메이션 프레임워크의 일부입니다.
공개 타입
속성
|
|
공개 함수
| 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 컨트롤에 애니메이션을 적용하는 데 사용됩니다. QTimeLine의 생성자에 지속 시간을 밀리초 단위로 전달하여 타임라인을 생성할 수 있습니다. 타임라인의 지속 시간은 애니메이션이 실행될 시간을 나타냅니다. 그런 다음 setFrameRange()를 호출하여 적절한 프레임 범위를 설정합니다. 마지막으로 frameChanged() 신호를 애니메이션을 적용할 위젯의 적절한 슬롯(예: QProgressBar 의 setValue())에 연결합니다. start()를 호출하면 QTimeLine은 Running 상태로 전환되며, 일정한 간격으로 frameChanged()을 발생시킵니다. 이로 인해 위젯에 연결된 속성의 값이 프레임 범위의 하단에서 상단으로 일정한 속도로 증가하게 됩니다. setUpdateInterval()를 호출하여 업데이트 간격을 지정할 수 있습니다. 업데이트가 완료되면 QTimeLine은 ' NotRunning ' 상태로 전환되며, finished()를 방출합니다.
예시:
//...
auto 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
auto pushButton = new QPushButton(tr("Start animation"), this);
connect(pushButton, &QPushButton::clicked, timeLine, &QTimeLine::start);
//...기본적으로 타임라인은 시작부터 끝까지 한 번만 실행되며, 다시 처음부터 시작하려면 start()을 다시 호출해야 합니다. 타임라인을 반복 재생하려면 setLoopCount()을 호출하여 타임라인이 종료되기 전까지 실행될 횟수를 전달하면 됩니다. 또한 setDirection()을 호출하여 방향을 변경하여 타임라인이 역방향으로 실행되도록 할 수도 있습니다. setPaused()를 호출하여 타임라인이 실행 중인 동안 일시 정지하거나 재시작할 수도 있습니다. 대화형 제어를 위해 setCurrentTime() 함수가 제공되며, 이 함수는 타임라인의 시간 위치를 직접 설정합니다. 이 함수는 NotRunning 상태에서 가장 유용하지만(예: QSlider 에서 valueChanged() 신호에 연결된 경우), 언제든지 호출할 수 있습니다.
프레임 인터페이스는 표준 위젯에 유용하지만, QTimeLine을 사용하면 어떤 유형의 애니메이션이든 제어할 수 있습니다. QTimeLine의 핵심은 valueForTime() 함수에 있으며, 이 함수는 주어진 시간에 대해 0과 1 사이의 값을 생성합니다. 이 값은 일반적으로 애니메이션의 단계를 설명하는 데 사용되며, 0은 애니메이션의 첫 번째 단계이고 1은 마지막 단계입니다. 실행 시, QTimeLine은 ` valueForTime()`를 호출하고 ` valueChanged()`를 발행하여 0에서 1 사이의 값을 생성합니다. 기본적으로 ` valueForTime()`는 보간 알고리즘을 적용하여 이러한 값을 생성합니다. ` setEasingCurve()`를 호출하여 미리 정의된 타임라인 알고리즘 집합 중에서 선택할 수 있습니다.
기본적으로 QTimeLine은 QEasingCurve::InOutSine 를 사용하며, 이 알고리즘은 값이 처음에는 천천히 증가하다가, 이후 꾸준히 증가하다가, 마지막에는 다시 천천히 증가하는 값을 제공합니다. 사용자 정의 타임라인을 사용하려면 valueForTime()을 재구현할 수 있으며, 이 경우 QTimeLine의 easingCurve 속성은 무시됩니다.
QProgressBar 및 QProgressDialog도 참조하십시오 .
멤버 유형 문서
enum QTimeLine::Direction
이 열거형은 ‘ Running ’ 상태일 때 타임라인의 방향을 나타냅니다.
| 상수 | 값 | 설명 |
|---|---|---|
QTimeLine::Forward | 0 | 타임라인의 현재 시간은 시간이 지남에 따라 증가합니다(즉, 0에서 끝/지속 시간 쪽으로 이동합니다). |
QTimeLine::Backward | 1 | 타임라인의 현재 시간이 시간이 지남에 따라 감소합니다(즉, 끝/지속 시간에서 0을 향해 이동합니다). |
setDirection()도 참조하십시오 .
enum QTimeLine::State
이 열거형은 타임라인의 상태를 나타냅니다.
| 상수 | 값 | 설명 |
|---|---|---|
QTimeLine::NotRunning | 0 | 타임라인이 실행 중이 아닙니다. 이는 ` QTimeLine`의 초기 상태이며, 작업이 완료되면 ` QTimeLine ` 상태로 다시 돌아갑니다. ` setCurrentTime()`가 호출되거나 ` start()`를 호출하여 타임라인을 시작할 때까지 현재 시간, 프레임 및 값은 변경되지 않습니다. |
QTimeLine::Paused | 1 | 타임라인이 일시 정지(즉, 일시적으로 중단)된 상태입니다. setPaused(false)를 호출하면 타임라인 활동이 재개됩니다. |
QTimeLine::Running | 2 | 타임라인이 실행 중입니다. 제어권이 이벤트 루프에 있는 동안, QTimeLine 는 정규 간격으로 현재 시간을 업데이트하며, 적절한 시점에 valueChanged() 및 frameChanged()를 발생시킵니다. |
state() 및 stateChanged()도 참조하십시오 .
속성 문서
[bindable] currentTime : int
참고: 이 속성은 QProperty 바인딩을 지원합니다.
이 속성은 타임라인의 현재 시간을 저장합니다.
QTimeLine 가 Running 상태일 때, 이 값은 타임라인의 지속 시간과 방향에 따라 지속적으로 업데이트됩니다. 그렇지 않은 경우, 이 값은 stop()가 마지막으로 호출되었을 때의 현재 값이거나 setCurrentTime()을 통해 설정된 값입니다.
참고: currentTime에 다른 속성을 바인딩할수는 있지만, 이 속성에 바인딩을 설정하는 것은 권장되지 않습니다. 애니메이션이 진행됨에 따라 currentTime은 자동으로 업데이트되어 바인딩이 해제되기 때문입니다.
기본적으로 이 속성의 값은 0입니다.
액세스 함수:
| int | currentTime() const |
| void | setCurrentTime(int msec) |
[bindable] direction : Direction
참고: 이 속성은 QProperty 바인딩을 지원합니다.
이 속성은 ` QTimeLine `가 ` Running ` 상태일 때 타임라인의 진행 방향을 나타냅니다.
이 방향은 시간이 0에서 타임라인 지속 시간 쪽으로 이동하는지, 아니면 start()이 호출된 후 지속 시간 값에서 0 쪽으로 이동하는지를 나타냅니다.
direction에 대한 모든 바인딩은 setDirection()뿐만 아니라 toggleDirection()에 의해서도 제거됩니다.
기본적으로 이 속성은 Forward 로 설정됩니다.
액세스 함수:
| QTimeLine::Direction | direction() const |
| void | setDirection(QTimeLine::Direction direction) |
[bindable] duration : int
참고: 이 속성은 ‘ QProperty ’ 바인딩을 지원합니다.
이 속성은 타임라인의 총 지속 시간을 밀리초 단위로 저장합니다.
기본적으로 이 값은 1000(즉, 1초)이지만, QTimeLine 의 생성자에 지속 시간을 전달하거나 setDuration()을 호출하여 이 값을 변경할 수 있습니다. 지속 시간은 0보다 커야 합니다.
참고: 지속 시간을변경한다고 해서 현재 시간이 0이나 새로운 지속 시간으로 재설정되지는 않습니다. 원하는 값을 지정하여 setCurrentTime()를 호출해야 합니다.
액세스 함수:
| int | duration() const |
| void | setDuration(int duration) |
[bindable] easingCurve : QEasingCurve
참고: 이 속성은 QProperty 바인딩을 지원합니다.
타임라인에서 사용할 이징 커브를 지정합니다. valueForTime()이 재정의된 경우, 이 값은 무시됩니다.
액세스 함수:
| QEasingCurve | easingCurve() const |
| void | setEasingCurve(const QEasingCurve &curve) |
valueForTime()도 참조하십시오 .
[bindable] loopCount : int
참고: 이 속성은 QProperty 바인딩을 지원합니다.
이 속성은 타임라인이 종료되기 전까지 반복될 횟수를 지정합니다.
루프 횟수가 0이면 타임라인이 무한히 반복됩니다.
기본적으로 이 속성의 값은 1입니다.
액세스 함수:
| int | loopCount() const |
| void | setLoopCount(int count) |
[bindable] updateInterval : int
참고: 이 속성은 QProperty 바인딩을 지원합니다.
이 속성은 QTimeLine 가 현재 시간을 업데이트할 때마다 발생하는 시간 간격을 밀리초 단위로 저장합니다.
현재 시간을 업데이트할 때, QTimeLine 는 현재 값이 변경된 경우 valueChanged()를, 프레임이 변경된 경우 frameChanged()를 발산합니다.
기본적으로 간격은 40ms이며, 이는 초당 25회의 업데이트 빈도에 해당합니다.
액세스 함수:
| int | updateInterval() const |
| void | setUpdateInterval(int interval) |
멤버 함수 문서
[explicit] QTimeLine::QTimeLine(int duration = 1000, QObject *parent = nullptr)
duration 밀리초의 지속 시간을 가진 타임라인을 생성합니다. ` parent `는 ` QObject`의 생성자에 전달됩니다. 기본 지속 시간은 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)
QTimeLine Running 상태일 때 이 신호를 일정한 간격으로 전송하지만, 현재 프레임이 변경된 경우에만 전송합니다. 는 현재 프레임 번호입니다. frame
참고: 이 신호는 비공개 신호입니다. 신호 연결에서 사용할 수는 있지만, 사용자가 직접 발산할 수는 없습니다.
QTimeLine::setFrameRange() 및 QTimeLine::updateInterval도 참조하십시오 .
int QTimeLine::frameForTime(int msec) const
msec 에 해당하는 프레임을 반환합니다. 이 값은 valueForTime() 함수가 반환한 값을 바탕으로 시작 프레임과 끝 프레임 간의 선형 보간을 통해 계산됩니다.
valueForTime() 및 setFrameRange()도 참조하십시오 .
[slot] void QTimeLine::resume()
현재 시점부터 타임라인을 재개합니다. ` QTimeLine `는 ‘Running’ 상태로 다시 진입하며, 이벤트 루프에 진입하면 정기적인 간격으로 현재 시간, 프레임 및 값을 업데이트합니다.
start()와 달리, 이 함수는 타임라인을 재개하기 전에 타임라인을 다시 시작하지 않습니다.
start(), updateInterval(), frameChanged(), valueChanged()도 참조하십시오 .
void QTimeLine::setEndFrame(int frame)
타임라인의 끝(즉, 현재 값이 1인 프레임)에 해당하는 끝 프레임을 frame 로 설정합니다.
endFrame(), startFrame() 및 setFrameRange()도 참조하십시오 .
void QTimeLine::setFrameRange(int startFrame, int endFrame)
타임라인의 프레임 카운터를 startFrame 에서 시작하고 endFrame 에서 끝날 수 있도록 설정합니다. 각 시간 값에 대해, QTimeLine 는 currentFrame() 또는 frameForTime()을 호출할 때 valueForTime()의 반환 값을 사용하여 보간을 통해 해당 프레임을 찾아냅니다.
'Running' 상태일 때, QTimeLine 는 프레임이 변경되면 frameChanged() 신호도 발생시킵니다.
startFrame(), endFrame(), start(), currentFrame()도 참조하십시오 .
[slot] void QTimeLine::setPaused(bool paused)
paused 가 true인 경우, 타임라인이 일시 중지되어 QTimeLine 가 Paused 상태로 전환됩니다. start() 또는 setPaused(false)가 호출될 때까지 업데이트 신호가 전송되지 않습니다. paused 가 false인 경우, 타임라인이 재개되어 중단된 지점부터 계속 진행됩니다.
void QTimeLine::setStartFrame(int frame)
타임라인의 시작 지점에 해당하는 시작 프레임(즉, 현재 값이 0인 프레임)을 frame 로 설정합니다.
startFrame(), endFrame() 및 setFrameRange()도 참조하십시오 .
[slot] void QTimeLine::start()
타임라인을 시작합니다. ` QTimeLine `는 ‘실행 중(Running)’ 상태로 전환되며, 이벤트 루프에 진입하면 일정한 간격으로 현재 시간, 프레임 및 값을 업데이트합니다. 기본 간격은 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(QTimerEvent *event)를 재구현합니다.
[slot] void QTimeLine::toggleDirection()
타임라인의 방향을 전환합니다. 방향이 ‘앞으로’였으면 ‘뒤로’로 바뀌고, 그 반대의 경우도 마찬가지입니다.
direction 에 대한 기존 바인딩이 제거됩니다.
setDirection()도 참조하십시오 .
[private signal] void QTimeLine::valueChanged(qreal value)
QTimeLine Running 상태일 때 이 신호를 일정한 간격으로 발신하지만, 현재 값이 변경된 경우에만 발신합니다. 는 현재 값입니다. 는 0.0과 1.0 사이의 숫자입니다. value value
참고: 이 신호는 비공개 신호입니다. 신호 연결에서 사용할 수 있지만, 사용자가 직접 발신할 수는 없습니다.
QTimeLine::setDuration(), QTimeLine::valueForTime(), QTimeLine::updateInterval도 참조하십시오 .
[virtual] qreal QTimeLine::valueForTime(int msec) const
msec 에 해당하는 타임라인 값을 반환합니다. 반환되는 값은 곡선 모양에 따라 달라지지만, 항상 0과 1 사이의 값을 가집니다. msec 가 0인 경우, 기본 구현은 항상 0을 반환합니다.
타임라인에 사용자 정의 곡선 형태를 제공하려면 이 함수를 재구현하십시오.
easingCurve 및 frameForTime()도 참조하십시오 .
© 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.