このページでは

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::CacheNone0フレームはキャッシュされません(デフォルト)。
QMovie::CacheAll1すべてのフレームがキャッシュされます。

enum QMovie::MovieState

この列挙型は、QMovie のさまざまな状態を表します。

定数値説明
QMovie::NotRunning0ムービーは再生されていません。これは `QMovie` の初期状態であり、stop() が呼び出された後、またはムービーが終了した後に移行する状態です。
QMovie::Paused1ムービーが一時停止しており、QMovie はupdated() またはresized() の発行を停止します。この状態は、pause() またはsetPaused(true) が呼び出された後に移行します。現在のフレーム番号は保持されており、unpause() またはsetPaused(false) が呼び出されると、ムービーは次のフレームから再開されます。
QMovie::Running2ムービーが再生中です。

プロパティのドキュメント

[bindable] cacheMode : CacheMode

注:この プロパティは、QProperty バインディングをサポートしています。

このプロパティは、ムービーのキャッシュモードを保持します。

QMovie がアニメーションデータのデコードに依存している基盤となるアニメーションフォーマットハンドラが、アニメーション内の特定のフレームへのジャンプや、アニメーションを先頭まで「巻き戻す」(ループ再生のため)ことをサポートしていない場合、フレームのキャッシュは有用です。 さらに、画像データがシーケンシャルデバイスから取得される場合、基盤となるアニメーションハンドラは、データがすでに読み込まれているフレームまで巻き戻すことはできません(その結果、ループ再生がまったく不可能になります)。

このような状況に対処するため、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

最後のフレームの矩形を返します。まだ更新されたフレームがない場合は、無効な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

ムービーが終了するまでにループされる回数を返します。ムービーが 1 回だけ再生される場合(ループなし)、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 が更新されたときに発火します。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.