Класс QMovie
Класс QMovie — это вспомогательный класс для воспроизведения анимированных изображений с помощью класса QImageReader. Подробнее...
| Заголовок: | #include <QMovie> |
| qmake: | QT += gui |
| Наследует: | QObject |
Типы
| Перечисление | CacheMode { CacheNone, CacheAll } |
| Перечисление | MovieState { НеЗапущено, Приостановлено, Запущено } |
Свойства
Общедоступные функции
| 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() |
Подробное описание
Этот класс используется для отображения простых анимаций без звука. Если вам нужно отобразить видео и медиа-контент, используйте фреймворк Qt Multimedia вместо этого.
Сначала создайте объект QMovie, передав в конструктор имя файла или указатель на QIODevice содержащий анимированный формат изображения. Вы можете вызвать 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().
END_OF_DOCUMENT_MARKER
[slot] void QMovie::stop()
Останавливает воспроизведение анимации. QMovie переходит в состояние НеЗапущено, и прекращает испускать сигналы updated() и resized(). Если снова вызвать start(), анимация начнётся с начала.
Если QMovie уже находится в состоянии НеЗапущено, эта функция ничего не делает.
См. также 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.13/qmovie.html