Класс QMovie
Класс QMovie — это удобный класс для воспроизведения анимированных изображений с помощью QImageReader. Подробнее...
| Заголовок: | #include <QMovie> |
| qmake: | QT += gui |
| Наследуется от: | QObject |
Типы public
| Перечисление | CacheMode { CacheNone, CacheAll } |
| Перечисление | MovieState { НеЗапущен, Приостановлен, Запущен } |
Свойства
Функции public
| QMovie(const QString &fileName, const QByteArray &format = QByteArray(), QObject *parent = nullptr) | |
| QMovie(QIODevice *device, const QByteArray &format = QByteArray(), QObject *parent = nullptr) | |
| QMovie(QObject *parent = nullptr) | |
| virtual | ~QMovie() |
| QColor | backgroundColor() const |
| 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 |
Свойства public
| 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) |
Статические public члены
| QList<QByteArray> | supportedFormats() |
Подробное описание
Этот класс используется для отображения простых анимаций без звука. Если вам нужно отображать видео и медиаконтент, используйте фреймворк Qt Multimedia.
Сначала создайте объект QMovie, передав либо имя файла, либо указатель на QIODevice, содержащий анимированный формат изображения, в конструктор QMovie. Вы можете вызвать isValid(), чтобы проверить, является ли данные изображения корректными, прежде чем запускать анимацию. Чтобы запустить анимацию, вызовите start(). QMovie перейдет в состояние Запущен, и будут выпущены сигналы 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 перейдет в состояние Приостановлен и выпустит сигнал stateChanged(). Если вы вызовете setPaused(false), QMovie вернется в состояние Запущен и возобновит анимацию. Чтобы остановить анимацию, вызовите stop().
Некоторые форматы анимации позволяют устанавливать цвет фона. Вы можете вызвать setBackgroundColor(), чтобы установить цвет, или backgroundColor(), чтобы получить текущий цвет фона.
currentFrameNumber() возвращает порядковый номер текущей кадра. У первого кадра в анимации порядковый номер 0. frameCount() возвращает общее количество кадров в анимации, если формат изображения это поддерживает. Вы можете вызвать loopCount(), чтобы получить количество повторений анимации перед завершением. nextFrameDelay() возвращает количество миллисекунд, в течение которого текущий кадр должен отображаться.
QMovie можно настроить на кеширование кадров анимации, вызвав setCacheMode().
Вызовите supportedFormats(), чтобы получить список поддерживаемых форматов QMovie.
См. также QLabel, QImageReader и Пример анимации.
Документация типов членов
enum QMovie::CacheMode
Этот перечисление описывает различные режимы кеширования QMovie.
| Константа | Значение | Описание |
|---|---|---|
QMovie::CacheNone |
0 |
Кадры не кешируются (по умолчанию). |
QMovie::CacheAll |
1 |
Все кадры кешируются. |
enum QMovie::MovieState
Это перечисление описывает различные состояния QMovie.
| Константа | Значение | Описание |
|---|---|---|
QMovie::NotRunning |
0 |
Анимация не запущена. Это начальное состояние QMovie, и состояние, в которое он переходит после вызова stop() или по завершении анимации. |
QMovie::Paused |
1 |
Анимация приостановлена, и QMovie перестаёт излучать updated() или resized(). Это состояние достигается после вызова pause() или setPaused(true). Номер текущего кадра сохраняется, и анимация продолжит показ следующего кадра при вызове unpause() или setPaused(false). |
QMovie::Running |
2 |
Анимация запущена. |
Документация свойств
cacheMode : CacheMode
Это свойство содержит режим кеширования анимации.
Кеширование кадров может быть полезно, когда обработчик формата анимации, на который опирается QMovie для декодирования данных анимации, не поддерживает переход к конкретным кадрам в анимации или даже «перемотку» анимации в начало (для циклов). Кроме того, если данные изображения поступают из последовательного устройства, обработчик анимации не может перейти обратно к кадрам, данные которых уже были прочитаны (что делает циклы вообще невозможными).
Для таких ситуаций объект QMovie может быть настроен на кеширование кадров, что увеличивает затраты памяти для хранения кадров в памяти на протяжении всего жизненного цикла объекта.
По умолчанию это свойство установлено в CacheNone.
Функции доступа:
| QMovie::CacheMode | cacheMode() const |
| void | setCacheMode(QMovie::CacheMode mode) |
См. также QMovie::CacheMode.
speed : int
Это свойство содержит скорость анимации.
Скорость измеряется в процентах от исходной скорости анимации. Значение по умолчанию 100%. Пример:
QMovie movie("racecar.gif");
movie.setSpeed(200); // 2x speed Функции доступа:
| int | speed() const |
| void | setSpeed(int percentSpeed) |
Документация функций-членов
QMovie::QMovie(const QString &fileName, const QByteArray &format = QByteArray(), QObject *parent = nullptr)
Конструирует объект QMovie. QMovie будет использовать данные изображения, считанные из fileName. Если format не пусто, QMovie будет использовать формат изображения format для декодирования данных изображения. В противном случае QMovie попытается определить формат.
Объект parent передаётся конструктору QObject.
QMovie::QMovie(QIODevice *device, const QByteArray &format = QByteArray(), QObject *parent = nullptr)
Конструирует объект QMovie. QMovie будет использовать данные изображения, считанные из device, который предполагается открытым и читаемым. Если format не пусто, QMovie будет использовать формат изображения format для декодирования данных изображения. В противном случае QMovie попытается определить формат.
Объект parent передаётся конструктору QObject.
QMovie::QMovie(QObject *parent = nullptr)
Конструирует объект QMovie, передавая объект parent конструктору QObject.
См. также setFileName(), setDevice(), и setFormat().
[signal] void QMovie::error(QImageReader::ImageReaderError error)
Этот сигнал излучается QMovie, когда во время воспроизведения произошла ошибка error. QMovie остановит анимацию и перейдёт в состояние QMovie::NotRunning.
См. также lastError() и lastErrorString().
[signal] void QMovie::finished()
Этот сигнал излучается, когда анимация завершена.
См. также QMovie::stop().
[signal] void QMovie::frameChanged(int frameNumber)
Этот сигнал излучается, когда номер кадра изменился на frameNumber. Вы можете вызвать currentImage() или currentPixmap(), чтобы получить копию кадра.
Эта функция была введена в Qt 4.1.
[slot] bool QMovie::jumpToNextFrame()
Переходит к следующему кадру. Возвращает true при успехе; в противном случае возвращает false.
[signal] void QMovie::resized(const QSize &size)
Этот сигнал излучается, когда текущий кадр был изменён на размер size. Этот эффект иногда используется в анимациях как альтернатива замене кадра. Вы можете вызвать currentImage() или currentPixmap() для получения копии обновлённого кадра.
[slot] void QMovie::setPaused(bool paused)
Если paused равно true, QMovie переходит в состояние Приостановлено и излучает stateChanged(Приостановлено); в противном случае он переходит в состояние Запущено и излучает stateChanged(Запущено).
См. также state().
[slot] void QMovie::start()
Запускает анимацию. QMovie переходит в состояние Запущено и начинает излучать updated() и resized() по мере продвижения анимации.
Если QMovie находится в состоянии Приостановлено, эта функция эквивалентна вызову setPaused(false). Если QMovie уже находится в состоянии Запущено, эта функция ничего не делает.
См. также stop() и setPaused().
[signal] void QMovie::started()
Этот сигнал излучается после вызова QMovie::start(), и QMovie перешёл в состояние QMovie::Запущено.
[signal] void QMovie::stateChanged(QMovie::MovieState state)
Этот сигнал излучается каждый раз, когда состояние анимации изменяется. Новое состояние задаётся параметром state.
См. также QMovie::state().
[slot] void QMovie::stop()
Останавливает анимацию. QMovie переходит в состояние Не запущена и прекращает излучение updated() и resized(). Если снова вызвать start(), анимация перезапустится с начала.
Если QMovie уже находится в состоянии NotRunning, эта функция ничего не делает.
См. также start() и setPaused().
[signal] void QMovie::updated(const QRect &rect)
Этот сигнал излучается, когда прямоугольник rect в текущей кадре был обновлён. Вы можете вызвать currentImage() или currentPixmap(), чтобы получить копию обновлённого кадра.
[virtual] 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().
QString QMovie::fileName() const
Возвращает имя файла, из которого QMovie считывает данные изображения. Если имя файла не задано или назначенное устройство не является файлом, возвращается пустая QString.
См. также setFileName() и device().
QByteArray QMovie::format() const
Возвращает формат, используемый QMovie при декодировании данных изображения. Если формат не задан, возвращается пустой QByteArray().
См. также setFormat().
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.
QImageReader::ImageReaderError QMovie::lastError() const
Возвращает последнюю ошибку, произошедшую во время попытки чтения данных изображения.
См. также lastErrorString().
QString QMovie::lastErrorString() const
Возвращает удобочитаемую строку, описывающую последнюю ошибку, произошедшую во время попытки чтения данных изображения.
См. также lastError().
int QMovie::loopCount() const
Возвращает количество повторений анимации перед завершением. Если анимация играет только один раз (без повторений), loopCount возвращает 0. Если анимация повторяется бесконечно, loopCount возвращает -1.
Обратите внимание, что если данные изображения поступают из последовательного устройства (например, сокета), QMovie может повторять анимацию только если cacheMode установлен в QMovie::CacheAll.
int QMovie::nextFrameDelay() const
Возвращает количество миллисекунд, которые QMovie будет ждать перед обновлением следующего кадра анимации.
QSize QMovie::scaledSize()
Возвращает размер кадров после масштабирования.
Эта функция была добавлена в Qt 4.1.
См. также 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 попытается определить формат данных изображения.
Вы можете вызвать supportedFormats(), чтобы получить полный список форматов, поддерживаемых QMovie.
См. также format() и QImageReader::supportedImageFormats().
void QMovie::setScaledSize(const QSize &size)
Устанавливает размер кадра после масштабирования в size.
Эта функция была добавлена в Qt 4.1.
См. также scaledSize() и QImageReader::setScaledSize().
QMovie::MovieState QMovie::state() const
Возвращает текущее состояние QMovie.
См. также MovieState и stateChanged().
[static] QList<QByteArray> QMovie::supportedFormats()
Возвращает список форматов изображений, поддерживаемых QMovie.
Эта функция была добавлена в Qt 4.1.
См. также QImageReader::supportedImageFormats().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qmovie.html