Класс QMovie
Класс QMovie — это вспомогательный класс для воспроизведения анимированных изображений с помощью QImageReader. Подробнее...
| Заголовок: | #include <QMovie> |
| qmake: | QT += gui |
| Наследует: | QObject |
Типы публичного интерфейса
| перечисление | CacheMode { CacheNone, CacheAll } |
| перечисление | MovieState { НеЗапущено, Приостановлено, Запущено } |
Свойства
- 1 свойство унаследовано от QObject
Публичные функции
| 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 |
| QMovie::CacheMode | cacheMode() const |
| int | текущийНомерКадра() const |
| QImage | текущееИзображение() const |
| QPixmap | текущийПиксель() const |
| QIODevice * | устройство() const |
| QString | имяФайла() const |
| QByteArray | формат() const |
| int | количествоКадров() const |
| QRect | прямоугольникКадра() const |
| bool | действителен() const |
| bool | перейтиККадру(int frameNumber) |
| QImageReader::ImageReaderError | последняяОшибка() const |
| QString | последняяОшибкаСтрока() const |
| int | количествоЦиклов() const |
| int | задержкаСледующегоКадра() const |
| QSize | масштабированныйРазмер() |
| void | установитьЦветФона(const QColor &color) |
| void | установитьРежимКэша(QMovie::CacheMode mode) |
| void | установитьУстройство(QIODevice *device) |
| void | установитьИмяФайла(const QString &fileName) |
| void | установитьФормат(const QByteArray &format) |
| void | установитьМасштабированныйРазмер(const QSize &size) |
| int | скорость() const |
| QMovie::MovieState | состояние() const |
- 34 публичных функции унаследованы от QObject
Публичные слоты
| bool | перейтиКСледующемуКадру() |
| void | приостановить(bool paused) |
| void | установитьСкорость(int percentSpeed) |
| void | запустить() |
| void | остановить() |
- 1 публичный слот унаследован от QObject
Сигналы
| 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) |
- 2 сигнала унаследованы от QObject
Статические публичные члены
| QList<QByteArray> | supportedFormats() |
- 10 статических публичных членов унаследованы от QObject
Дополнительные унаследованные члены
- 1 публичная переменная унаследована от QObject
- 9 защищенных функций унаследованы от QObject
- 2 защищенных переменных унаследованы от QObject
Подробное описание
Класс QMovie — это вспомогательный класс для воспроизведения анимированных изображений с помощью QImageReader.
Этот класс используется для отображения простых анимаций без звука. Если нужно отображать видео и медиаконтент, используйте фреймворк Qt Multimedia.
Сначала создайте объект QMovie, передав имя файла или указатель на QIODevice с анимированным изображением в конструктор QMovie. Вы можете вызвать 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 тогда перейдёт в состояние Приостановлено и испустит сигнал 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(QObject *parent = nullptr)
Конструирует объект QMovie, передавая объект parent конструктору QObject.
См. также setFileName(), setDevice() и setFormat().
QMovie::QMovie(QIODevice *device, const QByteArray &format = QByteArray(), QObject *parent = nullptr)
Конструирует объект QMovie. QMovie будет использовать данные изображения, считываемые из device, который предполагается открытым и доступным для чтения. Если format не пусто, QMovie будет использовать формат изображения format для декодирования данных изображения. В противном случае QMovie попытается определить формат.
Объект parent передаётся конструктору QObject.
QMovie::QMovie(const QString &fileName, const QByteArray &format = QByteArray(), QObject *parent = nullptr)
Конструирует объект QMovie. QMovie будет использовать данные изображения, считываемые из fileName. Если format не пусто, QMovie будет использовать формат изображения format для декодирования данных изображения. В противном случае QMovie попытается определить формат.
Объект parent передаётся конструктору QObject.
[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 считывает данные изображения. Если устройство не назначено, возвращается 0.
См. также setDevice() и fileName().
[signal] void QMovie::error(QImageReader::ImageReaderError error)
Этот сигнал испускается QMovie, когда произошла ошибка error во время воспроизведения. QMovie остановит воспроизведение и перейдёт в состояние QMovie::NotRunning.
См. также lastError() и lastErrorString().
QString QMovie::fileName() const
Возвращает имя файла, из которого QMovie считывает данные изображения. Если имя файла не задано или назначенное устройство не является файлом, возвращается пустая строка QString.
См. также setFileName() и device().
END_OF_DOCUMENT_MARKER
[signal] void QMovie::finished()
Этот сигнал испускается, когда воспроизведение анимированного изображения завершено.
См. также QMovie::stop().
QByteArray QMovie::format() const
Возвращает формат, который QMovie использует для декодирования данных изображения. Если формат не задан, возвращается пустой массив QByteArray().
См. также setFormat().
[signal] void QMovie::frameChanged(int frameNumber)
Этот сигнал испускается, когда номер кадра изменился на frameNumber. Вы можете вызвать currentImage() или currentPixmap() для получения копии кадра.
Эта функция была добавлена в Qt 4.1.
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.
[slot] bool QMovie::jumpToNextFrame()
Переходит к следующему кадру. Возвращает 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 будет ожидать перед обновлением следующего кадра в анимации.
[signal] void QMovie::resized(const QSize &size)
Этот сигнал испускается, когда текущий кадр был изменён на размер size. Этот эффект иногда используется в анимациях в качестве альтернативы замене кадра. Вы можете вызвать currentImage() или currentPixmap() для получения копии обновлённого кадра.
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().
[slot] void QMovie::setPaused(bool paused)
Если paused имеет значение true, QMovie перейдёт в состояние Пауза и выпустит stateChanged(Пауза); в противном случае перейдёт в состояние Запуск и выпустит stateChanged(Запуск).
См. также state().
void QMovie::setScaledSize(const QSize &size)
Устанавливает масштабированный размер кадра на size.
Эта функция была добавлена в Qt 4.1.
См. также scaledSize() и QImageReader::setScaledSize().
[slot] void QMovie::start()
Запускает воспроизведение анимированного изображения. QMovie перейдёт в состояние Запуск и начнёт испускать updated() и resized() по мере воспроизведения.
Если QMovie находится в состоянии Пауза, эта функция эквивалентна вызову setPaused(false). Если QMovie уже находится в состоянии Запуск, эта функция ничего не делает.
См. также stop() и setPaused().
[signal] void QMovie::started()
Этот сигнал испускается после вызова QMovie::start(), и QMovie перешёл в состояние QMovie::Запуск.
QMovie::MovieState QMovie::state() const
Возвращает текущее состояние QMovie.
См. также MovieState и stateChanged().
[signal] void QMovie::stateChanged(QMovie::MovieState state)
Этот сигнал испускается каждый раз, когда состояние анимированного изображения изменяется. Новое состояние указано параметром state.
См. также QMovie::state().
[slot] void QMovie::stop()
Останавливает воспроизведение анимированного изображения. QMovie переходит в состояние НеЗапуск и прекращает испускание сигналов updated() и resized(). Если start() вызывается снова, анимированное изображение начнётся с начала.
Если QMovie уже находится в состоянии НеЗапуск, эта функция ничего не делает.
См. также start() и setPaused().
[static] QList<QByteArray> QMovie::supportedFormats()
Возвращает список форматов изображений, поддерживаемых QMovie.
Эта функция была добавлена в Qt 4.1.
См. также QImageReader::supportedImageFormats().
[signal] void QMovie::updated(const QRect &rect)
Этот сигнал испускается, когда прямоугольник rect в текущем кадре был обновлён. Вы можете вызвать currentImage() или currentPixmap() для получения копии обновлённого кадра.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qmovie.html