Класс QMovie
Класс QMovie — это вспомогательный класс для воспроизведения видео с помощью QImageReader. Подробнее...
| Заголовок: | #include <QMovie> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Наследует: | QObject |
Открытые типы
| enum | CacheMode { CacheNone, CacheAll } |
| enum | MovieState { NotRunning, Paused, Running } |
Свойства
Открытые функции
| 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 |
Открытые слоты
| 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) |
Статические открытые члены
| QList<QByteArray> | supportedFormats() |
Подробное описание
Этот класс используется для отображения простых анимаций без звука.
Сначала создайте объект QMovie, передав в конструктор QMovie либо имя файла, либо указатель на QIODevice, содержащий формат анимированного изображения. Вы можете вызвать isValid() для проверки правильности данных изображения перед запуском видео. Для запуска видео вызовите start(). QMovie перейдет в состояние Running и отправит сигналы 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 затем перейдет в состояние Paused и отправит сигнал stateChanged(). Если вы вызовете setPaused(false), QMovie снова перейдет в состояние Running и начнет видео снова. Чтобы остановить видео, вызовите 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(), чтобы получить копию кадра.
[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()
Возвращает масштабированный размер кадров.
См. также 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.
См. также scaledSize() и QImageReader::setScaledSize().
QMovie::MovieState QMovie::state() const
Возвращает текущее состояние QMovie.
См. также MovieState и stateChanged().
[static] QList<QByteArray> QMovie::supportedFormats()
Возвращает список форматов изображений, поддерживаемых QMovie.
См. также QImageReader::supportedImageFormats().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qmovie.html