QMovie Class
QMovie 클래스는 QImageReader 를 사용하여 동영상을 재생하기 위한 편의 클래스입니다. 더 보기...
| 헤더: | #include <QMovie> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| 상속: | QObject |
공개 타입
| enum | CacheMode { CacheNone, CacheAll } |
| enum | MovieState { NotRunning, Paused, Running } |
속성
공개 함수
| QMovie(QObject *parent = nullptr) | |
| QMovie(QIODevice *device, const QByteArray &format = QByteArray(), QObject *parent = nullptr) | |
| QMovie(const QString &fileName, const QByteArray &format = QByteArray(), QObject *parent = nullptr) | |
| virtual | ~QMovie() |
| QColor | backgroundColor() const |
| QBindable<QMovie::CacheMode> | bindableCacheMode() |
| QBindable<int> | bindableSpeed() |
| QMovie::CacheMode | cacheMode() const |
| int | currentFrameNumber() const |
| QImage | currentImage() const |
| QPixmap | currentPixmap() const |
| QIODevice * | device() const |
| QString | fileName() const |
| QByteArray | format() const |
| int | frameCount() const |
| QRect | frameRect() const |
| bool | isValid() const |
| bool | jumpToFrame(int frameNumber) |
| QImageReader::ImageReaderError | lastError() const |
| QString | lastErrorString() const |
| int | loopCount() const |
| int | nextFrameDelay() const |
| QSize | scaledSize() |
| void | setBackgroundColor(const QColor &color) |
| void | setCacheMode(QMovie::CacheMode mode) |
| void | setDevice(QIODevice *device) |
| void | setFileName(const QString &fileName) |
| void | setFormat(const QByteArray &format) |
| void | setScaledSize(const QSize &size) |
| int | speed() const |
| QMovie::MovieState | state() const |
공개 슬롯
| bool | jumpToNextFrame() |
| void | setPaused(bool paused) |
| void | setSpeed(int percentSpeed) |
| void | start() |
| void | stop() |
신호
| void | error(QImageReader::ImageReaderError error) |
| void | finished() |
| void | frameChanged(int frameNumber) |
| void | resized(const QSize &size) |
| void | started() |
| void | stateChanged(QMovie::MovieState state) |
| void | updated(const QRect &rect) |
정적 공용 멤버
| QList<QByteArray> | supportedFormats() |
상세 설명
이 클래스는 사운드 없이 간단한 애니메이션을 표시하는 데 사용됩니다.
먼저, 파일 이름이나 애니메이션 이미지 형식이 포함된 ` QIODevice `에 대한 포인터를 `QMovie`의 생성자에 전달하여 `QMovie` 객체를 생성합니다. 동영상을 시작하기 전에 ` isValid()`를 호출하여 이미지 데이터가 유효한지 확인할 수 있습니다. 영화를 시작하려면 ` start()`를 호출합니다. QMovie는 ` Running ` 상태로 전환되며, ` started()` 및 ` stateChanged()` 신호를 발생시킵니다. 영화의 현재 상태를 확인하려면 ` state()`를 호출합니다.
애플리케이션에서 동영상을 표시하려면 QMovie 객체를 QLabel::setMovie()에 전달하면 됩니다. 예시:
QLabel label;
QMovie *movie = new QMovie("animations/fire.gif");
label.setMovie(movie);
movie->start();동영상에 새로운 프레임이 준비될 때마다 QMovie는 updated()를 발생시킵니다. 프레임 크기가 변경되면 resized()가 발생합니다. currentImage() 또는 currentPixmap()를 호출하여 현재 프레임의 복사본을 얻을 수 있습니다. 동영상 재생이 완료되면 QMovie는 finished()를 발생시킵니다. 재생 중에 오류가 발생하면(예: 이미지 파일이 손상된 경우), QMovie는 error()를 발생시킵니다.
setSpeed()을 호출하여 동영상 재생 속도를 제어할 수 있으며, 이 함수는 원본 속도의 백분율을 인자로 받습니다. setPaused(true)를 호출하여 동영상을 일시 정지할 수 있습니다. 그러면 QMovie는 Paused 상태로 전환되며 stateChanged()를 발생시킵니다. setPaused(false)를 호출하면 QMovie는 Running 상태로 다시 전환되어 동영상을 다시 재생합니다. 동영상을 중지하려면 stop()를 호출하십시오.
일부 애니메이션 형식에서는 배경색을 설정할 수 있습니다. setBackgroundColor()을 호출하여 색상을 설정하거나, backgroundColor()을 호출하여 현재 배경색을 가져올 수 있습니다.
currentFrameNumber()는 현재 프레임의 순서 번호를 반환합니다. 애니메이션의 첫 번째 프레임은 순서 번호 0을 가집니다. frameCount()는 이미지 형식이 이를 지원하는 경우 애니메이션의 총 프레임 수를 반환합니다. loopCount()을 호출하여 동영상이 종료되기 전까지 반복될 횟수를 확인할 수 있습니다. nextFrameDelay()은 현재 프레임이 표시되어야 하는 시간을 밀리초 단위로 반환합니다.
setCacheMode()를 호출하여 QMovie가 애니메이션 프레임을 캐시하도록 지시할 수 있습니다.
QMovie가 지원하는 형식 목록을 보려면 supportedFormats()를 호출하십시오.
QLabel 및 QImageReader도 참조하십시오 .
멤버 유형 설명서
enum QMovie::CacheMode
이 열거형은 QMovie 의 다양한 캐시 모드를 설명합니다.
| 상수 | 값 | 상수값 |
|---|---|---|
QMovie::CacheNone | 0 | 프레임이 캐시되지 않습니다(기본값). |
QMovie::CacheAll | 1 | 모든 프레임이 캐시됩니다. |
enum QMovie::MovieState
이 열거형은 QMovie 의 다양한 상태를 나타냅니다.
| 상수 | 값 | 설명 |
|---|---|---|
QMovie::NotRunning | 0 | 영화가 재생 중이 아닙니다. 이는 QMovie 의 초기 상태이며, stop()가 호출되거나 영화가 끝난 후 들어가는 상태입니다. |
QMovie::Paused | 1 | 영화가 일시 정지되어 있으며, ` QMovie `는 ` updated()` 또는 ` resized()`를 더 이상 발생시키지 않습니다. 이 상태는 `pause()` 또는 ` setPaused(true)`를 호출한 후에 진입합니다. 현재 프레임 번호가 저장되며, `unpause()` 또는 ` setPaused(false)`가 호출되면 영화는 다음 프레임부터 계속 재생됩니다. |
QMovie::Running | 2 | 동영상이 재생 중입니다. |
속성 설명서
[bindable] cacheMode : CacheMode
참고: 이 속성은 QProperty 바인딩을 지원합니다.
이 속성은 영화의 캐시 모드를 저장합니다.
QMovie 가 애니메이션 데이터를 디코딩하는 데 의존하는 기본 애니메이션 형식 핸들러가 애니메이션 내의 특정 프레임으로 건너뛰는 기능이나 (반복을 위해) 애니메이션을 시작 부분으로 "되감기"하는 기능을 지원하지 않는 경우, 프레임을 캐싱하는 것이 유용할 수 있습니다. 또한, 이미지 데이터가 순차적 장치에서 제공되는 경우, 기본 애니메이션 핸들러는 데이터가 이미 읽힌 프레임으로 되돌아가기(seek back)할 수 없으므로(이로 인해 반복 재생이 전혀 불가능해짐) 문제가 발생할 수 있습니다.
이러한 상황을 해결하기 위해, QMovie 객체에 프레임을 캐시하도록 지시할 수 있지만, 이 경우 객체의 수명 동안 프레임을 메모리에 보관해야 하므로 추가적인 메모리 비용이 발생합니다.
기본적으로 이 속성은 ` CacheNone`로 설정되어 있습니다.
액세스 함수:
| QMovie::CacheMode | cacheMode() const |
| void | setCacheMode(QMovie::CacheMode mode) |
QMovie::CacheMode도 참조하십시오 .
[bindable] speed : int
참고: 이 속성은 QProperty 바인딩을 지원합니다.
이 속성은 동영상의 재생 속도를 나타냅니다.
속도는 원본 동영상 속도의 백분율로 측정됩니다. 기본 속도는 100%입니다. 예시:
QMovie movie("racecar.gif");
movie.setSpeed(200); // 2x speed액세스 함수:
| int | speed() const |
| void | setSpeed(int percentSpeed) |
멤버 함수 설명서
[explicit] QMovie::QMovie(QObject *parent = nullptr)
parent 객체를 QObject 의 생성자에 전달하여 QMovie 객체를 생성합니다.
setFileName(), setDevice() 및 setFormat()도 참조하십시오 .
[explicit] QMovie::QMovie(QIODevice *device, const QByteArray &format = QByteArray(), QObject *parent = nullptr)
QMovie 객체를 생성합니다. QMovie는 device 에서 이미지 데이터를 읽으며, 이 파일은 이미 열려 있고 읽기 가능한 상태라고 가정합니다. format 가 비어 있지 않은 경우, QMovie는 이미지 데이터를 디코딩할 때 format 이미지 형식을 사용합니다. 그렇지 않은 경우, QMovie는 형식을 추측하려고 시도합니다.
parent 객체는 QObject 의 생성자에 전달됩니다.
[explicit] QMovie::QMovie(const QString &fileName, const QByteArray &format = QByteArray(), QObject *parent = nullptr)
QMovie 객체를 생성합니다. QMovie는 fileName 에서 이미지 데이터를 읽습니다. format 가 비어 있지 않은 경우, QMovie는 이미지 데이터를 디코딩할 때 format 에 정의된 이미지 형식을 사용합니다. 그렇지 않은 경우, QMovie는 형식을 추측하려고 시도합니다.
parent 객체는 QObject 의 생성자에 전달됩니다.
[virtual noexcept] QMovie::~QMovie()
QMovie 객체를 삭제합니다.
QColor QMovie::backgroundColor() const
영화의 배경색을 반환합니다. 배경색이 지정되지 않은 경우, 무효한 QColor 객체가 반환됩니다.
setBackgroundColor()도 참조하십시오 .
int QMovie::currentFrameNumber() const
현재 프레임의 순서 번호를 반환합니다. 동영상에서 첫 번째 프레임의 번호는 0입니다.
QImage QMovie::currentImage() const
현재 프레임을 ` QImage` 형식으로 반환합니다.
currentPixmap() 및 updated()도 참조하십시오 .
QPixmap QMovie::currentPixmap() const
현재 프레임을 ` QPixmap` 형식으로 반환합니다.
currentImage() 및 updated()도 참조하십시오 .
QIODevice *QMovie::device() const
QMovie 가 이미지 데이터를 읽는 장치를 반환합니다. 현재 할당된 장치가 없는 경우, nullptr 가 반환됩니다.
setDevice() 및 fileName()도 참조하십시오 .
[signal] void QMovie::error(QImageReader::ImageReaderError error)
이 신호는 재생 중에 오류 error 가 발생했을 때 QMovie 에서 전송됩니다. QMovie 는 동영상을 중지하고 QMovie::NotRunning 상태로 전환됩니다.
lastError() 및 lastErrorString()도 참조하십시오 .
QString QMovie::fileName() const
QMovie 가 이미지 데이터를 읽는 파일의 이름을 반환합니다. 파일 이름이 지정되지 않았거나, 지정된 장치가 파일이 아닌 경우, 빈 QString 가 반환됩니다.
setFileName() 및 device()도 참조하십시오 .
[signal] void QMovie::finished()
이 신호는 영화가 끝났을 때 전송됩니다.
QMovie::stop()도 참조하십시오 .
QByteArray QMovie::format() const
QMovie 가 이미지 데이터를 디코딩할 때 사용하는 형식을 반환합니다. 형식이 지정되지 않은 경우, 빈 QByteArray()가 반환됩니다.
setFormat()도 참조하십시오 .
[signal] void QMovie::frameChanged(int frameNumber)
이 신호는 프레임 번호가 frameNumber 로 변경되었을 때 발생합니다. currentImage() 또는 currentPixmap()를 호출하여 해당 프레임의 사본을 가져올 수 있습니다.
int QMovie::frameCount() const
동영상의 프레임 수를 반환합니다.
일부 애니메이션 형식은 이 기능을 지원하지 않으며, 이 경우 0이 반환됩니다.
QRect QMovie::frameRect() const
마지막 프레임의 rect를 반환합니다. 아직 업데이트된 프레임이 없는 경우, 유효하지 않은 QRect 가 반환됩니다.
currentImage() 및 currentPixmap()도 참조하십시오 .
bool QMovie::isValid() const
영화 파일이 유효한 경우(예: 이미지 데이터를 읽을 수 있고 이미지 형식이 지원되는 경우) true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.
동영상이 유효하지 않은 이유에 대한 자세한 내용은 lastError()를 참조하십시오.
bool QMovie::jumpToFrame(int frameNumber)
프레임 번호 frameNumber 로 이동합니다. 성공 시 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.
[slot] bool QMovie::jumpToNextFrame()
다음 프레임으로 건너뜁니다. 성공 시 ` true `를 반환하고, 그렇지 않으면 ` false`를 반환합니다.
QImageReader::ImageReaderError QMovie::lastError() const
이미지 데이터를 읽으려는 과정에서 발생한 가장 최근의 오류를 반환합니다.
lastErrorString()도 참조하십시오 .
QString QMovie::lastErrorString() const
이미지 데이터를 읽으려는 과정에서 발생한 가장 최근의 오류를 사람이 읽기 쉬운 형식으로 반환합니다.
lastError()도 참조하십시오 .
int QMovie::loopCount() const
동영상이 끝나기 전에 반복 재생되는 횟수를 반환합니다. 동영상이 한 번만 재생되는 경우(반복 재생 없음), loopCount는 0을 반환합니다. 동영상이 무한히 반복되는 경우, loopCount는 -1을 반환합니다.
단, 이미지 데이터가 순차적 장치(예: 소켓)에서 가져온 경우, ` QMovie `는 ` cacheMode `가 ` QMovie::CacheAll`로 설정된 경우에만 동영상을 반복 재생할 수 있습니다.
int QMovie::nextFrameDelay() const
QMovie 가 애니메이션의 다음 프레임을 업데이트하기까지 대기하는 시간을 밀리초 단위로 반환합니다.
[signal] void QMovie::resized(const QSize &size)
이 신호는 현재 프레임의 크기가 ` size`로 조정되었을 때 발생합니다. 이 효과는 애니메이션에서 프레임을 교체하는 대신 사용되기도 합니다. 업데이트된 프레임의 복사본을 얻으려면 ` currentImage()` 또는 ` currentPixmap()`를 호출할 수 있습니다.
QSize QMovie::scaledSize()
프레임의 스케일링된 크기를 반환합니다.
setScaledSize() 및 QImageReader::scaledSize()도 참조하십시오 .
void QMovie::setBackgroundColor(const QColor &color)
이 함수는 해당 기능을 지원하는 이미지 형식의 경우 배경색을 color 로 설정합니다.
backgroundColor()도 참조하십시오 .
void QMovie::setDevice(QIODevice *device)
현재 장치를 device 로 설정합니다. QMovie 는 동영상 재생 시 이 장치에서 이미지 데이터를 읽어옵니다.
device() 및 setFormat()도 참조하십시오 .
void QMovie::setFileName(const QString &fileName)
QMovie 가 이미지 데이터를 읽어오는 파일의 이름을 fileName 로 설정합니다.
fileName(), setDevice() 및 setFormat()도 참조하십시오 .
void QMovie::setFormat(const QByteArray &format)
QMovie 가 이미지 데이터를 디코딩할 때 사용할 형식을 format 로 설정합니다. 기본적으로 QMovie 는 이미지 데이터의 형식을 자동으로 추측합니다.
QMovie 가 지원하는 전체 형식 목록을 확인하려면 supportedFormats()를 호출할 수 있습니다.
format() 및 QImageReader::supportedImageFormats()도 참조하십시오 .
[slot] void QMovie::setPaused(bool paused)
paused 가 true인 경우, QMovie 는 Paused 상태로 전환되어 stateChanged(Paused)를 발생시키고, 그렇지 않은 경우 Running 상태로 전환되어 stateChanged(Running)를 발생시킵니다.
state()도 참조하십시오 .
void QMovie::setScaledSize(const QSize &size)
스케일링된 프레임 크기를 size 로 설정합니다.
scaledSize() 및 QImageReader::setScaledSize()도 참조하십시오 .
[slot] void QMovie::start()
동영상을 재생합니다. ` QMovie `는 ` Running ` 상태로 전환되며, 동영상이 진행됨에 따라 ` updated()` 및 ` resized()`를 출력하기 시작합니다.
QMovie 가 Paused 상태에 있는 경우, 이 함수는 setPaused(false)를 호출하는 것과 동일합니다. QMovie 가 이미 Running 상태에 있는 경우, 이 함수는 아무 작업도 수행하지 않습니다.
stop() 및 setPaused()도 참조하십시오 .
[signal] void QMovie::started()
이 신호는 ` QMovie::start()`가 호출되고, ` QMovie `가 ` QMovie::Running ` 상태에 진입한 후에 발생합니다.
QMovie::MovieState QMovie::state() const
QMovie 의 현재 상태를 반환합니다.
MovieState 및 stateChanged()도 참조하십시오 .
[signal] void QMovie::stateChanged(QMovie::MovieState state)
이 신호는 영화의 상태가 변경될 때마다 발생합니다. 새로운 상태는 ` state`로 지정됩니다.
QMovie::state()도 참조하십시오 .
[slot] void QMovie::stop()
동영상을 중지합니다. ` QMovie `는 ` NotRunning ` 상태로 전환되며, ` updated()` 및 ` resized()`의 발신을 중지합니다. ` start()`가 다시 호출되면 동영상이 처음부터 다시 재생됩니다.
QMovie 가 이미 NotRunning 상태에 있는 경우, 이 함수는 아무 작업도 수행하지 않습니다.
start() 및 setPaused()도 참조하십시오 .
[static] QList<QByteArray> QMovie::supportedFormats()
QMovie 에서 지원하는 이미지 형식 목록을 반환합니다.
QImageReader::supportedImageFormats()도 참조하십시오 .
[signal] void QMovie::updated(const QRect &rect)
이 신호는 현재 프레임의 rect rect 가 업데이트되었을 때 발생합니다. currentImage() 또는 currentPixmap()을 호출하여 업데이트된 프레임의 복사본을 가져올 수 있습니다.
© 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.