QMovie Class
La clase QMovie es una clase de conveniencia para reproducir películas con QImageReader. Más...
| Cabecera: | #include <QMovie> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Hereda: | QObject |
Tipos públicos
| enum | CacheMode { CacheNone, CacheAll } |
| enum | MovieState { NotRunning, Paused, Running } |
Propiedades
Funciones públicas
| 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 |
Ranuras públicas
| bool | jumpToNextFrame() |
| void | setPaused(bool paused) |
| void | setSpeed(int percentSpeed) |
| void | start() |
| void | stop() |
Señales
| 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) |
Miembros públicos estáticos
| QList<QByteArray> | supportedFormats() |
Descripción Detallada
Esta clase se utiliza para mostrar animaciones simples sin sonido.
Primero, crea un objeto QMovie pasando el nombre de un archivo o un puntero a un QIODevice que contenga un formato de imagen animada al constructor de QMovie. Puedes llamar a isValid() para comprobar si los datos de la imagen son válidos, antes de iniciar la película. Para iniciar la película, llame a start(). QMovie entrará en el estado Running, y emitirá started() y stateChanged(). Para obtener el estado actual de la película, llame a state().
Para mostrar la película en tu aplicación, puedes pasar tu objeto QMovie a QLabel::setMovie(). Ejemplo:
QLabel label; QMovie *movie = new QMovie("animations/fire.gif"); label.setMovie(movie); movie->start();
Cada vez que un nuevo fotograma esté disponible en la película, QMovie emitirá updated(). Si el tamaño del fotograma cambia, se emite resized(). Puede llamar a currentImage() o currentPixmap() para obtener una copia del fotograma actual. Cuando la película termina, QMovie emite finished(). Si se produce algún error durante la reproducción (por ejemplo, el archivo de imagen está corrupto), QMovie emitirá error().
Puede controlar la velocidad de reproducción de la película llamando a setSpeed(), que toma como argumento el porcentaje de la velocidad original. Pausa la película llamando a setPaused(true). QMovie entrará entonces en el estado Paused y emitirá stateChanged(). Si llama a setPaused(false), QMovie volverá al estado Running y comenzará la película de nuevo. Para detener la película, llame a stop().
Ciertos formatos de animación le permiten establecer el color de fondo. Puede llamar a setBackgroundColor() para establecer el color, o a backgroundColor() para recuperar el color de fondo actual.
currentFrameNumber() devuelve el número de secuencia del fotograma actual. El primer fotograma de la animación tiene el número de secuencia 0. frameCount() devuelve el número total de fotogramas de la animación, si el formato de la imagen lo permite. Puede llamar a loopCount() para obtener el número de veces que la película debe repetirse antes de terminar. nextFrameDelay() devuelve el número de milisegundos que debe mostrarse el fotograma actual.
QMovie puede ser instruido para almacenar en caché fotogramas de una animación llamando a setCacheMode().
Llame a supportedFormats() para una lista de formatos que QMovie soporta.
Ver también QLabel y QImageReader.
Documentación de tipos de miembros
enum QMovie::CacheMode
Este enum describe los diferentes modos de caché de QMovie.
| Constante | Valor | Descripción |
|---|---|---|
QMovie::CacheNone | 0 | No se almacenan tramas (por defecto). |
QMovie::CacheAll | 1 | Se almacenan todas las imágenes. |
enum QMovie::MovieState
Este enum describe los diferentes estados de QMovie.
| Constante | Valor | Descripción |
|---|---|---|
QMovie::NotRunning | 0 | La película no se está ejecutando. Este es el estado inicial de QMovie, y el estado en el que entra después de que stop() haya sido llamado o la película haya terminado. |
QMovie::Paused | 1 | La película está en pausa y QMovie deja de emitir updated() o resized(). Se entra en este estado después de llamar a pause() o setPaused(true). El número de fotograma actual se mantiene, y la película continuará con el siguiente fotograma cuando se llame a unpause() o setPaused(false). |
QMovie::Running | 2 | La película está en marcha. |
Documentación de propiedades
[bindable] cacheMode : CacheMode
Nota: Esta propiedad admite enlaces QProperty.
Esta propiedad contiene el modo de caché de la película
El almacenamiento en caché de los fotogramas puede ser útil cuando el manejador del formato de animación subyacente en el que se basa QMovie para descodificar los datos de la animación no permite saltar a fotogramas concretos de la animación, o incluso "rebobinar" la animación hasta el principio (para hacer bucles). Además, si los datos de la imagen proceden de un dispositivo secuencial, no es posible que el gestor de animación subyacente busque los fotogramas cuyos datos ya se han leído (lo que imposibilita por completo la reproducción en bucle).
Para ayudar en estas situaciones, un objeto QMovie puede ser instruido para almacenar en caché los fotogramas, con el coste añadido de mantener los fotogramas en memoria durante la vida del objeto.
Por defecto, esta propiedad se establece en CacheNone.
Funciones de acceso:
| QMovie::CacheMode | cacheMode() const |
| void | setCacheMode(QMovie::CacheMode mode) |
Véase también QMovie::CacheMode.
[bindable] speed : int
Nota: Esta propiedad es compatible con QProperty.
Esta propiedad contiene la velocidad de la película
La velocidad se mide en porcentaje de la velocidad original de la película. La velocidad por defecto es 100%. Ejemplo:
QMovie movie("racecar.gif"); movie.setSpeed(200); // 2x speed
Funciones de acceso:
| int | speed() const |
| void | setSpeed(int percentSpeed) |
Documentación de funciones miembro
[explicit] QMovie::QMovie(QObject *parent = nullptr)
Construye un objeto QMovie, pasando el objeto parent al constructor de QObject.
Véase también setFileName(), setDevice() y setFormat().
[explicit] QMovie::QMovie(QIODevice *device, const QByteArray &format = QByteArray(), QObject *parent = nullptr)
Construye un objeto QMovie. QMovie utilizará los datos de imagen leídos de device, que asume que está abierto y es legible. Si format no está vacío, QMovie utilizará el formato de imagen format para decodificar los datos de imagen. En caso contrario, QMovie intentará adivinar el formato.
El objeto parent se pasa al constructor de QObject.
[explicit] QMovie::QMovie(const QString &fileName, const QByteArray &format = QByteArray(), QObject *parent = nullptr)
Construye un objeto QMovie. QMovie utilizará los datos de imagen leídos de fileName. Si format no está vacío, QMovie utilizará el formato de imagen format para decodificar los datos de imagen. En caso contrario, QMovie intentará adivinar el formato.
El objeto parent se pasa al constructor de QObject.
[virtual noexcept] QMovie::~QMovie()
Destruye el objeto QMovie.
QColor QMovie::backgroundColor() const
Devuelve el color de fondo de la película. Si no se ha asignado ningún color de fondo, se devuelve un QColor no válido.
Véase también setBackgroundColor().
int QMovie::currentFrameNumber() const
Devuelve el número de secuencia del fotograma actual. El número del primer fotograma de la película es 0.
QImage QMovie::currentImage() const
Devuelve el marco actual como QImage.
Véase también currentPixmap() y updated().
QPixmap QMovie::currentPixmap() const
Devuelve el marco actual como QPixmap.
Véase también currentImage() y updated().
QIODevice *QMovie::device() const
Devuelve el dispositivo del que QMovie lee datos de imagen. Si no se ha asignado ningún dispositivo, se devuelve nullptr.
Véase también setDevice() y fileName().
[signal] void QMovie::error(QImageReader::ImageReaderError error)
Esta señal es emitida por QMovie cuando se produce un error error durante la reproducción. QMovie detendrá la película y entrará en el estado QMovie::NotRunning.
Véase también lastError() y lastErrorString().
QString QMovie::fileName() const
Devuelve el nombre del archivo del que QMovie lee datos de imagen. Si no se ha asignado ningún nombre de archivo, o si el dispositivo asignado no es un archivo, se devuelve un QString vacío.
Véase también setFileName() y device().
[signal] void QMovie::finished()
Esta señal se emite cuando la película ha terminado.
Véase también QMovie::stop().
QByteArray QMovie::format() const
Devuelve el formato que utiliza QMovie al descodificar datos de imagen. Si no se ha asignado ningún formato, se devuelve un QByteArray() vacío.
Véase también setFormat().
[signal] void QMovie::frameChanged(int frameNumber)
Esta señal se emite cuando el número de fotograma ha cambiado a frameNumber. Puede llamar a currentImage() o currentPixmap() para obtener una copia del fotograma.
int QMovie::frameCount() const
Devuelve el número de fotogramas de la película.
Algunos formatos de animación no admiten esta función, en cuyo caso se devuelve 0.
QRect QMovie::frameRect() const
Devuelve el rect del último fotograma. Si aún no se ha actualizado ningún fotograma, se devuelve un QRect no válido.
Véase también currentImage() y currentPixmap().
bool QMovie::isValid() const
Devuelve true si la película es válida (por ejemplo, los datos de imagen son legibles y el formato de imagen es compatible); en caso contrario, devuelve false.
Para obtener información sobre por qué la película no es válida, consulte lastError().
bool QMovie::jumpToFrame(int frameNumber)
Salta al número de fotograma frameNumber. Devuelve true en caso de éxito; en caso contrario devuelve false.
[slot] bool QMovie::jumpToNextFrame()
Salta al siguiente fotograma. Devuelve true en caso de éxito; en caso contrario, devuelve false.
QImageReader::ImageReaderError QMovie::lastError() const
Devuelve el error más reciente que se ha producido al intentar leer datos de imagen.
Véase también lastErrorString().
QString QMovie::lastErrorString() const
Devuelve una representación legible por humanos del error más reciente que se ha producido al intentar leer datos de imagen.
Véase también lastError().
int QMovie::loopCount() const
Devuelve el número de veces que la película se reproducirá en bucle antes de terminar. Si la película sólo se reproduce una vez (sin bucle), loopCount devuelve 0. Si la película se repite para siempre, loopCount devuelve -1.
Tenga en cuenta que, si los datos de la imagen proceden de un dispositivo secuencial (por ejemplo, un socket), QMovie sólo puede reproducir la película en bucle si cacheMode está configurado como QMovie::CacheAll.
int QMovie::nextFrameDelay() const
Devuelve el número de milisegundos que QMovie esperará antes de actualizar el siguiente fotograma de la animación.
[signal] void QMovie::resized(const QSize &size)
Esta señal se emite cuando el fotograma actual se ha redimensionado a size. Este efecto se utiliza a veces en animaciones como alternativa a la sustitución del fotograma. Puedes llamar a currentImage() o currentPixmap() para obtener una copia del fotograma actualizado.
QSize QMovie::scaledSize()
Devuelve el tamaño escalado de los fotogramas.
Véase también setScaledSize() y QImageReader::scaledSize().
void QMovie::setBackgroundColor(const QColor &color)
Para los formatos de imagen que lo admiten, esta función establece el color de fondo en color.
Véase también backgroundColor().
void QMovie::setDevice(QIODevice *device)
Establece el dispositivo actual en device. QMovie leerá datos de imagen de este dispositivo cuando la película se esté ejecutando.
Véase también device() y setFormat().
void QMovie::setFileName(const QString &fileName)
Establece el nombre del archivo del que QMovie lee los datos de imagen, en fileName.
Véase también fileName(), setDevice(), y setFormat().
void QMovie::setFormat(const QByteArray &format)
Establece el formato que QMovie utilizará al descodificar los datos de imagen, en format. Por defecto, QMovie intentará adivinar el formato de los datos de imagen.
Puedes llamar a supportedFormats() para obtener la lista completa de formatos que admite QMovie.
Véase también format() y QImageReader::supportedImageFormats().
[slot] void QMovie::setPaused(bool paused)
Si paused es verdadero, QMovie entrará en el estado Paused y emitirá stateChanged(Pausado); en caso contrario, entrará en el estado Running y emitirá stateChanged(En ejecución).
Véase también state().
void QMovie::setScaledSize(const QSize &size)
Establece el tamaño del marco escalado en size.
Véase también scaledSize() y QImageReader::setScaledSize().
[slot] void QMovie::start()
Inicia la película. QMovie entrará en el estado Running, y empezará a emitir updated() y resized() a medida que avance la película.
Si QMovie está en el estado Paused, esta función equivale a llamar a setPaused(false). Si QMovie ya está en el estado Running, esta función no hace nada.
Véase también stop() y setPaused().
[signal] void QMovie::started()
Esta señal se emite después de que se haya llamado a QMovie::start(), y QMovie haya entrado en el estado QMovie::Running.
QMovie::MovieState QMovie::state() const
Devuelve el estado actual de QMovie.
Véase también MovieState y stateChanged().
[signal] void QMovie::stateChanged(QMovie::MovieState state)
Esta señal se emite cada vez que cambia el estado de la película. El nuevo estado se especifica en state.
Véase también QMovie::state().
[slot] void QMovie::stop()
Detiene la película. QMovie entra en el estado NotRunning, y deja de emitir updated() y resized(). Si se vuelve a llamar a start(), la película se reiniciará desde el principio.
Si QMovie ya está en el estado NotRunning, esta función no hace nada.
Véase también start() y setPaused().
[static] QList<QByteArray> QMovie::supportedFormats()
Devuelve la lista de formatos de imagen soportados por QMovie.
Véase también QImageReader::supportedImageFormats().
[signal] void QMovie::updated(const QRect &rect)
Esta señal se emite cuando el rect rect del fotograma actual ha sido actualizado. Puede llamar a currentImage() o currentPixmap() para obtener una copia del marco actualizado.
© 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.