Sur cette page

QMovie Class

La classe QMovie est une classe de commodité permettant de lire des films à l'aide de QImageReader. Plus...

En-tête : #include <QMovie>
CMake : find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake : QT += gui
Héritages : 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 est utilisée pour montrer des animations simples sans son.

Créez d'abord un objet QMovie en passant au constructeur de QMovie soit le nom d'un fichier, soit un pointeur vers un site QIODevice contenant une image animée. Vous pouvez appeler isValid() pour vérifier si les données de l'image sont valides, avant de lancer le film. Pour démarrer le film, appelez start(). QMovie entrera dans l'état Running et émettra started() et stateChanged(). Pour obtenir l'état actuel du film, appelez state().

Pour afficher le film dans votre application, vous pouvez passer votre objet QMovie à 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 updated(). Si la taille de l'image change, resized() est émis. Vous pouvez appeler currentImage() ou currentPixmap() pour obtenir une copie de l'image en cours. Lorsque le film est terminé, 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 le pourcentage de la vitesse originale comme argument. Mettez le film en pause en appelant setPaused(true). QMovie entrera alors dans l'état Paused et émettra stateChanged(). Si vous appelez setPaused(false), QMovie entrera à nouveau dans l'état Running et recommencera le 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 en cours. 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 de l'image le permet. Vous pouvez appeler loopCount() pour obtenir le nombre de fois que le film doit être bouclé avant de se terminer. nextFrameDelay() renvoie le nombre de millisecondes pendant lesquelles l'image en cours doit être affichée.

QMovie peut être chargé 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 cache de QMovie.

ConstanteValeurDescription
QMovie::CacheNone0Aucune image n'est mise en cache (valeur par défaut).
QMovie::CacheAll1Toutes les images sont mises en cache.

enum QMovie::MovieState

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

ConstanteValeurDescription de l'état
QMovie::NotRunning0Le film n'est pas en cours d'exécution. Il s'agit de l'état initial de QMovie et de l'état dans lequel il entre après que stop() a été appelé ou que le film est terminé.
QMovie::Paused1Le film est en pause et QMovie arrête 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 en cours est conservé, et le film continuera avec l'image suivante lorsque unpause() ou setPaused(false) sera appelé.
QMovie::Running2Le film est en cours d'exécution.

Documentation sur les propriétés

[bindable] cacheMode : CacheMode

Remarque : Cette propriété prend en charge les liens QProperty.

Cette propriété contient le mode de cache du film

La mise en cache des images peut être utile lorsque le gestionnaire de format d'animation sous-jacent sur lequel QMovie s'appuie pour décoder les données d'animation ne permet pas de sauter à des images particulières de l'animation, ni même de "rembobiner" l'animation jusqu'à son début (pour une boucle). En outre, si les données d'image proviennent d'un dispositif séquentiel, il n'est pas possible pour le gestionnaire d'animation sous-jacent de revenir aux images dont les données ont déjà été lues (ce qui rend le bouclage tout à fait impossible).

Pour aider dans de telles situations, un objet QMovie peut être chargé de mettre les images en cache, au prix d'un surcoût de mémoire, car les images restent 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 liens QProperty.

Cette propriété indique la vitesse du film

La vitesse est mesurée en pourcentage de la vitesse originale de la vidéo. 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 des fonctions membres

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

Construit un objet QMovie, en passant l'objet parent au constructeur de QObject.

Voir aussi setFileName(), setDevice() et setFormat().

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

Construit un objet QMovie. QMovie utilisera les données d'image lues sur device, dont il suppose qu'elles sont ouvertes et lisibles. 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.

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

Construit un objet QMovie. QMovie utilisera les données d'image lues sur 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 adresse QColor invalide est renvoyée.

Voir également setBackgroundColor().

int QMovie::currentFrameNumber() const

Renvoie le numéro de séquence de l'image en cours. Le numéro de la première image du film est 0.

QImage QMovie::currentImage() const

Renvoie le cadre actuel sous forme de QImage.

Voir aussi currentPixmap() et updated().

QPixmap QMovie::currentPixmap() const

Renvoie le cadre actuel sous forme de QPixmap.

Voir aussi currentImage() et updated().

QIODevice *QMovie::device() const

Renvoie le périphérique à partir duquel QMovie lit les données d'image. Si aucun périphérique n'a été attribué, nullptr est renvoyé.

Voir aussi setDevice() et fileName().

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

Ce signal est émis par QMovie lorsque l'erreur error s'est produite pendant la lecture. QMovie arrête le film et entre dans l'état QMovie::NotRunning.

Voir également lastError() et lastErrorString().

QString QMovie::fileName() const

Renvoie le nom du fichier à partir duquel 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 QString vide est renvoyé.

Voir aussi setFileName() et device().

[signal] void QMovie::finished()

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

Voir également 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é assigné, un QByteArray() vide est retourné.

Voir aussi setFormat().

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

Ce signal est émis lorsque le numéro de la trame est passé à frameNumber. Vous pouvez appeler currentImage() ou currentPixmap() pour obtenir une copie de la trame.

int QMovie::frameCount() const

Renvoie le nombre d'images dans le film.

Certains formats d'animation ne prennent pas en charge cette fonctionnalité, auquel cas 0 est renvoyé.

QRect QMovie::frameRect() const

Renvoie le rectangle de la dernière image. Si aucune image n'a encore été mise à jour, une adresse QRect invalide est renvoyée.

Voir aussi currentImage() et currentPixmap().

bool QMovie::isValid() const

Renvoie true si le film est valide (par exemple, les données de l'image sont lisibles et le format de l'image est pris en charge) ; sinon, renvoie false.

Pour savoir pourquoi le film n'est pas valide, voir lastError().

bool QMovie::jumpToFrame(int frameNumber)

Passe à l'image numérotée frameNumber. Renvoie true en cas de succès ; sinon, renvoie false.

[slot] bool QMovie::jumpToNextFrame()

Passe à l'image suivante. Renvoie true en cas de succès, sinon false.

QImageReader::ImageReaderError QMovie::lastError() const

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

Voir aussi lastErrorString().

QString QMovie::lastErrorString() const

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

Voir aussi lastError().

int QMovie::loopCount() const

Renvoie le nombre de fois que le film va tourner en boucle avant de se terminer. Si le film n'est joué qu'une seule fois (pas de boucle), loopCount renvoie 0. Si le film boucle indéfiniment, loopCount renvoie -1.

Notez que, si les données d'image proviennent d'un périphérique séquentiel (par exemple, une prise), QMovie ne peut boucler le film que si cacheMode est défini sur QMovie::CacheAll.

int QMovie::nextFrameDelay() const

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

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

Ce signal est émis lorsque le cadre actuel a été redimensionné à size. Cet effet est parfois utilisé dans les animations comme alternative au remplacement du cadre. Vous pouvez appeler currentImage() ou currentPixmap() pour obtenir une copie de l'image mise à jour.

QSize QMovie::scaledSize()

Renvoie la taille des images à l'échelle.

Voir aussi setScaledSize() et QImageReader::scaledSize().

void QMovie::setBackgroundColor(const QColor &color)

Pour les formats d'image qui le supportent, cette fonction définit la couleur d'arrière-plan à color.

Voir aussi backgroundColor().

void QMovie::setDevice(QIODevice *device)

Définit le périphérique actuel à device. QMovie lira les données d'image à partir de ce périphérique lorsque le film sera en cours d'exécution.

Voir aussi device() et setFormat().

void QMovie::setFileName(const QString &fileName)

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

Voir aussi 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, à format. Par défaut, QMovie tentera de deviner le format des données d'image.

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

Voir aussi format() et QImageReader::supportedImageFormats().

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

Si paused est vrai, QMovie entrera dans l'état Paused et émettra stateChanged(Paused) ; sinon, il entrera dans l'état Running et émettra stateChanged(Running).

Voir aussi state().

void QMovie::setScaledSize(const QSize &size)

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

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

[slot] void QMovie::start()

Lance le film. QMovie entrera dans l'état Running et commencera à émettre updated() et resized() au fur et à mesure que le film progresse.

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 que QMovie::start() a été appelé et que QMovie est entré dans l'état QMovie::Running.

QMovie::MovieState QMovie::state() const

Renvoie l'état actuel de QMovie.

Voir aussi 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 aussi QMovie::state().

[slot] void QMovie::stop()

Arrête le film. QMovie entre dans l'état NotRunning et arrête d'émettre updated() et resized(). Si start() est appelé à nouveau, le film reprendra depuis le début.

Si QMovie est déjà dans l'état NotRunning, cette fonction ne fait rien.

Voir aussi 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 le rect rect dans le cadre actuel a été mis à jour. Vous pouvez appeler currentImage() ou currentPixmap() pour obtenir une copie du cadre mis à 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.