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.
| Constante | Valeur | Description |
|---|---|---|
QMovie::CacheNone | 0 | Aucune trame n’est mise en cache (valeur par défaut). |
QMovie::CacheAll | 1 | Toutes les trames sont mises en cache. |
enum QMovie::MovieState
Cette énumération décrit les différents états de QMovie.
| Constante | Valeur | Description |
|---|---|---|
QMovie::NotRunning | 0 | Le 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::Paused | 1 | Le 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::Running | 2 | Le 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 speedFonctions 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.