Sur cette page

QMovie Class

La classe QMovie est une classe utilitaire permettant de lire des vidéos à l'aide d'QImageReader. En savoir plus...

En-tête : #include <QMovie>
CMake : find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake : QT += gui
Hérite de : QObject

Types publics

enum CacheMode { CacheNone, CacheAll }
enum MovieState { NotRunning, Paused, Running }

Propriétés

Fonctions publiques

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

Emplacements publics

bool jumpToNextFrame()
void setPaused(bool paused)
void setSpeed(int percentSpeed)
void start()
void stop()

Signaux

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)

Membres publics statiques

QList<QByteArray> supportedFormats()

Description détaillée

Cette classe sert à afficher des animations simples sans son.

Commencez par créer un objet QMovie en passant au constructeur de QMovie soit le nom d’un fichier, soit un pointeur vers une structure « QIODevice » contenant une image au format animé. Vous pouvez appeler la fonction isValid() pour vérifier si les données d’image sont valides avant de lancer le film. Pour lancer le film, appelez la fonction start(). QMovie passera à l’ét Running, et émettra les signaux started() et stateChanged(). Pour obtenir l’état actuel du film, appelez la fonction state().

Pour afficher le film dans votre application, vous pouvez transmettre votre objet QMovie à la fonction QLabel::setMovie(). Exemple :

QLabel label;
QMovie *movie = new QMovie("animations/fire.gif");

label.setMovie(movie);
movie->start();

Chaque fois qu’une nouvelle image est disponible dans le film, QMovie émet la méthode updated(). Si la taille de l’image change, la méthode resized() est émise. Vous pouvez appeler currentImage() ou currentPixmap() pour obtenir une copie de l'image actuelle. Lorsque la lecture du film est terminée, QMovie émet finished(). Si une erreur se produit pendant la lecture (par exemple, si le fichier image est corrompu), QMovie émet error().

Vous pouvez contrôler la vitesse de lecture du film en appelant ` setSpeed()`, qui prend comme argument le pourcentage de la vitesse d’origine. Mettez le film en pause en appelant setPaused(true). QMovie passera alors à l’état Paused et émettra stateChanged(). Si vous appelez setPaused(false), QMovie repassera à l’état Running et relancera la lecture du film. Pour arrêter le film, appelez stop().

Certains formats d’animation vous permettent de définir la couleur d’arrière-plan. Vous pouvez appeler setBackgroundColor() pour définir la couleur, ou backgroundColor() pour récupérer la couleur d’arrière-plan actuelle.

currentFrameNumber() renvoie le numéro de séquence de l'image actuelle. La première image de l'animation porte le numéro de séquence 0. frameCount() renvoie le nombre total d'images de l'animation, si le format d'image le prend en charge. Vous pouvez appeler loopCount() pour obtenir le nombre de boucles que le film doit effectuer avant de se terminer. nextFrameDelay() renvoie le nombre de millisecondes pendant lesquelles l’image actuelle doit être affichée.

Il est possible de demander à QMovie de mettre en cache les images d’une animation en appelant setCacheMode().

Appelez supportedFormats() pour obtenir la liste des formats pris en charge par QMovie.

Voir également QLabel et QImageReader.

Documentation sur les types de membres

enum QMovie::CacheMode

Cette énumération décrit les différents modes de mise en cache d'QMovie.

ConstanteValeurDescription
QMovie::CacheNone0Aucune trame n’est mise en cache (valeur par défaut).
QMovie::CacheAll1Toutes les trames sont mises en cache.

enum QMovie::MovieState

Cette énumération décrit les différents états de QMovie.

ConstanteValeurDescription
QMovie::NotRunning0Le film n'est pas en cours de lecture. Il s'agit de l'état initial d'QMovie, ainsi que de l'état dans lequel il se trouve après l'appel de la méthode stop() ou lorsque le film est terminé.
QMovie::Paused1Le film est en pause, et QMovie cesse d’émettre updated() ou resized(). Cet état est atteint après l’appel de pause() ou de setPaused(true). Le numéro de l’image actuelle est conservé, et le film reprendra à l’image suivante lorsque unpause() ou setPaused(false) sera appelé.
QMovie::Running2Le film est en cours de lecture.

Documentation des propriétés

[bindable] cacheMode : CacheMode

Remarque : cette propriété prend en charge les liaisons de type « QProperty ».

Cette propriété définit le mode de mise en cache du film

La mise en cache des images peut s’avérer utile lorsque le gestionnaire de format d’animation sous-jacent sur lequel s’appuie QMovie pour décoder les données d’animation ne prend pas en charge le saut vers des images spécifiques de l’animation, ni même le « retour en arrière » de l’animation jusqu’au début (pour la lecture en boucle). De plus, si les données d’image proviennent d’un périphérique séquentiel, le gestionnaire d’animation sous-jacent ne peut pas revenir en arrière vers des images dont les données ont déjà été lues (ce qui rend la lecture en boucle totalement impossible).

Pour pallier ce problème, un objet ` QMovie ` peut être configuré pour mettre les images en cache, au prix d’une consommation de mémoire supplémentaire liée au maintien de ces images en mémoire pendant toute la durée de vie de l’objet.

Par défaut, cette propriété est définie sur ` CacheNone`.

Fonctions d’accès :

QMovie::CacheMode cacheMode() const
void setCacheMode(QMovie::CacheMode mode)

Voir également QMovie::CacheMode.

[bindable] speed : int

Remarque : cette propriété prend en charge les liaisons de type « QProperty ».

Cette propriété détermine la vitesse de la vidéo

La vitesse est exprimée en pourcentage de la vitesse d'origine du film. La vitesse par défaut est de 100 %. Exemple :

QMovie movie("racecar.gif");
movie.setSpeed(200); // 2x speed

Fonctions d'accès :

int speed() const
void setSpeed(int percentSpeed)

Documentation sur les fonctions de membre

[explicit] QMovie::QMovie(QObject *parent = nullptr)

Crée un objet QMovie en transmettant l'objet parent au constructeur de QObject.

Voir également setFileName(), setDevice() et setFormat().

[explicit] QMovie::QMovie(QIODevice *device, const QByteArray &format = QByteArray(), QObject *parent = nullptr)

Crée un objet QMovie. QMovie utilisera les données d'image lues à partir de ` device`, en partant du principe que ce fichier est ouvert et accessible en lecture. Si ` format ` n'est pas vide, QMovie utilisera le format d'image ` format ` pour décoder les données d'image. Dans le cas contraire, QMovie tentera de deviner le format.

L’objet parent est transmis au constructeur de QObject.

[explicit] QMovie::QMovie(const QString &fileName, const QByteArray &format = QByteArray(), QObject *parent = nullptr)

Crée un objet QMovie. QMovie utilisera les données d'image lues à partir de ` fileName`. Si ` format ` n'est pas vide, QMovie utilisera le format d'image ` format ` pour décoder les données d'image. Sinon, QMovie tentera de deviner le format.

L'objet parent est transmis au constructeur de QObject.

[virtual noexcept] QMovie::~QMovie()

Détruit l'objet « QMovie ».

QColor QMovie::backgroundColor() const

Renvoie la couleur d'arrière-plan du film. Si aucune couleur d'arrière-plan n'a été attribuée, une valeur non valide de type ` QColor ` est renvoyée.

Voir aussi setBackgroundColor().

int QMovie::currentFrameNumber() const

Renvoie le numéro d'ordre de l'image actuelle. Le numéro de la première image du film est 0.

QImage QMovie::currentImage() const

Renvoie l'image actuelle sous la forme d'un objet ` QImage`.

Voir également currentPixmap() et updated().

QPixmap QMovie::currentPixmap() const

Renvoie l'image courante sous la forme d'un objet ` QPixmap`.

Voir également currentImage() et updated().

QIODevice *QMovie::device() const

Renvoie le périphérique à partir duquel l'QMovie lit les données d'image. Si aucun périphérique n'est actuellement attribué, la valeur « nullptr » est renvoyée.

Voir également setDevice() et fileName().

[signal] void QMovie::error(QImageReader::ImageReaderError error)

Ce signal est émis par QMovie lorsqu'une erreur de type « error » se produit pendant la lecture. QMovie mettra le film en pause et passera à l'état « QMovie::NotRunning ».

Voir également lastError() et lastErrorString().

QString QMovie::fileName() const

Renvoie le nom du fichier à partir duquel la fonction ` QMovie ` lit les données d'image. Si aucun nom de fichier n'a été attribué, ou si le périphérique attribué n'est pas un fichier, un objet ` QString ` vide est renvoyé.

Voir également setFileName() et device().

[signal] void QMovie::finished()

Ce signal est émis lorsque le film est terminé.

Voir aussi QMovie::stop().

QByteArray QMovie::format() const

Renvoie le format utilisé par QMovie lors du décodage des données d'image. Si aucun format n'a été attribué, un QByteArray() vide est renvoyé.

Voir aussi setFormat().

[signal] void QMovie::frameChanged(int frameNumber)

Ce signal est émis lorsque le numéro d'image passe à frameNumber. Vous pouvez appeler currentImage() ou currentPixmap() pour obtenir une copie de l'image.

int QMovie::frameCount() const

Renvoie le nombre d'images du film.

Certains formats d'animation ne prennent pas en charge cette fonctionnalité ; dans ce cas, la valeur 0 est renvoyée.

QRect QMovie::frameRect() const

Renvoie le rectangle de la dernière image. Si aucune image n'a encore été mise à jour, une valeur « QRect » non valide est renvoyée.

Voir également currentImage() et currentPixmap().

bool QMovie::isValid() const

Renvoie « true » si le film est valide (c'est-à-dire si les données d'image sont lisibles et si le format d'image est pris en charge) ; sinon, renvoie « false ».

Pour savoir pourquoi le film n'est pas valide, consultez la fonction lastError().

bool QMovie::jumpToFrame(int frameNumber)

Passe à l'image numéro frameNumber. Renvoie true en cas de réussite ; sinon, renvoie false.

[slot] bool QMovie::jumpToNextFrame()

Passe à l'image suivante. Renvoie « true » en cas de réussite ; sinon, renvoie « false ».

QImageReader::ImageReaderError QMovie::lastError() const

Renvoie l'erreur la plus récente survenue lors de la tentative de lecture des données d'image.

Voir aussi ` lastErrorString()`.

QString QMovie::lastErrorString() const

Renvoie une représentation lisible par l'utilisateur de la dernière erreur survenue lors d'une tentative de lecture des données d'image.

Voir également lastError().

int QMovie::loopCount() const

Renvoie le nombre de fois que la vidéo sera lue en boucle avant la fin. Si la vidéo ne doit être lue qu'une seule fois (sans boucle), loopCount renvoie 0. Si la vidéo est lue en boucle indéfiniment, loopCount renvoie -1.

Notez que, si les données d'image proviennent d'un périphérique séquentiel (par exemple, un socket), la méthode ` QMovie ` ne peut lire la vidéo en boucle que si la propriété ` cacheMode ` est définie sur ` QMovie::CacheAll`.

int QMovie::nextFrameDelay() const

Renvoie le nombre de millisecondes pendant lesquelles ` QMovie ` attendra avant de mettre à jour l'image suivante de l'animation.

[signal] void QMovie::resized(const QSize &size)

Ce signal est émis lorsque la trame actuelle a été redimensionnée à l'adresse size. Cet effet est parfois utilisé dans les animations comme alternative au remplacement de la trame. Vous pouvez appeler les méthodes ` currentImage()` ou ` currentPixmap()` pour obtenir une copie de la trame mise à jour.

QSize QMovie::scaledSize()

Renvoie la taille mise à l'échelle des images.

Voir également setScaledSize() et QImageReader::scaledSize().

void QMovie::setBackgroundColor(const QColor &color)

Pour les formats d'image qui le prennent en charge, cette fonction définit la couleur d'arrière-plan sur color.

Voir également backgroundColor().

void QMovie::setDevice(QIODevice *device)

Définit le périphérique actuel sur device. QMovie lira les données d'image à partir de ce périphérique lors de la lecture de la vidéo.

Voir également device() et setFormat().

void QMovie::setFileName(const QString &fileName)

Définit le nom du fichier à partir duquel QMovie lit les données d'image, à l'adresse fileName.

Voir également fileName(), setDevice() et setFormat().

void QMovie::setFormat(const QByteArray &format)

Définit le format que QMovie utilisera lors du décodage des données d'image sur format. Par défaut, QMovie tentera de deviner le format des données d'image.

Vous pouvez appeler la fonction ` supportedFormats()` pour obtenir la liste complète des formats pris en charge par ` QMovie `.

Voir également format() et QImageReader::supportedImageFormats().

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

Si paused est vrai, QMovie passera à l'état Paused et émettra stateChanged(Paused) ; dans le cas contraire, il passera à l'état Running et émettra stateChanged(Running).

Voir également state().

void QMovie::setScaledSize(const QSize &size)

Définit la taille mise à l'échelle de l'image sur size.

Voir également scaledSize() et QImageReader::setScaledSize().

[slot] void QMovie::start()

Lance la lecture de la vidéo. ` QMovie ` passe à l'état ` Running ` et commence à émettre ` updated()` et ` resized()` au fur et à mesure que la vidéo défile.

Si QMovie est dans l'état Paused, cette fonction équivaut à appeler setPaused(false). Si QMovie est déjà dans l'état Running, cette fonction ne fait rien.

Voir également stop() et setPaused().

[signal] void QMovie::started()

Ce signal est émis après l'appel de la fonction QMovie::start() et lorsque QMovie est passé à l'état « QMovie::Running ».

QMovie::MovieState QMovie::state() const

Renvoie l'état actuel de QMovie.

Voir également MovieState et stateChanged().

[signal] void QMovie::stateChanged(QMovie::MovieState state)

Ce signal est émis chaque fois que l'état du film change. Le nouvel état est spécifié par state.

Voir également QMovie::state().

[slot] void QMovie::stop()

Arrête la lecture de la vidéo. La fonction ` QMovie ` passe à l’état ` NotRunning ` et cesse d’émettre les événements ` updated()` et ` resized()`. Si la fonction ` start()` est à nouveau appelée, la lecture de la vidéo reprendra depuis le début.

Si QMovie se trouve déjà dans l'état « NotRunning », cette fonction ne fait rien.

Voir également start() et setPaused().

[static] QList<QByteArray> QMovie::supportedFormats()

Renvoie la liste des formats d'image pris en charge par QMovie.

Voir aussi QImageReader::supportedImageFormats().

[signal] void QMovie::updated(const QRect &rect)

Ce signal est émis lorsque l'rect rect de l'image courante a été mise à jour. Vous pouvez appeler currentImage() ou currentPixmap() pour obtenir une copie de l'image mise à jour.

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