Класс QMovie
Класс QMovie — это вспомогательный класс для воспроизведения анимированных изображений с помощью QImageReader. Подробнее...
| Заголовок: | #include <QMovie> |
| qmake: | QT += gui |
| Наследуется от: | QObject |
Типы публичного доступа
| Перечисление | CacheMode { CacheNone, CacheAll } |
| Перечисление | MovieState { НеЗапущен, Приостановлен, Запущен } |
Свойства
- 1 свойство унаследовано от QObject
Функции публичного доступа
| QMovie(QObject *parent = Q_NULLPTR) | |
| QMovie(QIODevice *device, const QByteArray &format = QByteArray(), QObject *parent = Q_NULLPTR) | |
| QMovie(const QString &fileName, const QByteArray &format = QByteArray(), QObject *parent = Q_NULLPTR) | |
| ~QMovie() | |
| QColor | backgroundColor() const |
| 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) |
| int | loopCount() const |
| int | nextFrameDelay() const |
| QSize | scaledSize() |
| void | setBackgroundColor(const QColor &color) |
| void | setCacheMode(CacheMode mode) |
| void | setDevice(QIODevice *device) |
| void | setFileName(const QString &fileName) |
| void | setFormat(const QByteArray &format) |
| void | setScaledSize(const QSize &size) |
| int | speed() const |
| MovieState | state() const |
- 32 функции публичного доступа унаследованы от QObject
Свойства публичного доступа
| bool | jumpToNextFrame() |
| void | setPaused(bool paused) |
| void | setSpeed(int percentSpeed) |
| void | start() |
| void | stop() |
- 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() |
- 11 статических членов публичного доступа унаследованы от QObject
Дополнительные унаследованные члены
- 9 защищённых функций унаследованы от QObject
Подробное описание
Класс QMovie — это вспомогательный класс для воспроизведения анимированных изображений с помощью QImageReader.
Этот класс используется для отображения простых анимаций без звука. Если вам нужно отображать видео и медиаконтент, используйте фреймворк 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().
Для получения списка поддерживаемых QMovie форматов вызовите supportedFormats().
См. также 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.
Функции доступа:
| CacheMode | cacheMode() const |
| void | setCacheMode(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 = Q_NULLPTR)
Конструктор объекта QMovie, передающий объект parent конструктору QObject.
См. также setFileName(), setDevice() и setFormat().
QMovie::QMovie(QIODevice *device, const QByteArray &format = QByteArray(), QObject *parent = Q_NULLPTR)
Конструктор объекта QMovie. QMovie будет читать данные изображения из device, предполагая, что он открыт и доступен для чтения. Если format не пусто, QMovie будет использовать формат изображения format для декодирования данных изображения. В противном случае QMovie попытается определить формат.
Объект parent передаётся в конструктор QObject.
QMovie::QMovie(const QString &fileName, const QByteArray &format = QByteArray(), QObject *parent = Q_NULLPTR)
Конструктор объекта QMovie. QMovie будет читать данные изображения из fileName. Если format не пусто, QMovie будет использовать формат изображения format для декодирования данных изображения. В противном случае QMovie попытается определить формат.
Объект parent передаётся в конструктор QObject.
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.
QString QMovie::fileName() const
Возвращает имя файла, из которого QMovie считывает данные изображения. Если имя файла не назначено или назначенное устройство не является файлом, возвращается пустая QString.
См. также setFileName() и device().
[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.
bool QMovie::jumpToFrame(int frameNumber)
Переходит к кадру с номером frameNumber. Возвращает true при успехе; в противном случае возвращает false.
[slot] bool QMovie::jumpToNextFrame()
Переходит к следующему кадру. Возвращает true при успехе; в противном случае возвращает false.
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 перейдет в состояние Paused и излучит stateChanged(Paused); в противном случае он перейдет в состояние Running и излучит stateChanged(Running).
См. также state().
void QMovie::setScaledSize(const QSize &size)
Устанавливает масштабированный размер кадра на size.
Эта функция была добавлена в Qt 4.1.
См. также scaledSize() и QImageReader::setScaledSize().
[slot] void QMovie::start()
Запускает фильм. QMovie перейдет в состояние Running и начнет излучать updated() и resized() по мере воспроизведения фильма.
Если QMovie находится в состоянии Paused, эта функция эквивалентна вызову setPaused(false). Если QMovie уже находится в состоянии Running, эта функция ничего не делает.
См. также stop() и setPaused().
[signal] void QMovie::started()
Этот сигнал излучается после вызова QMovie::start(), и QMovie перешел в состояние QMovie::Running.
MovieState QMovie::state() const
Возвращает текущее состояние QMovie.
См. также MovieState и stateChanged().
[signal] void QMovie::stateChanged(QMovie::MovieState state)
Этот сигнал излучается каждый раз, когда состояние фильма изменяется. Новое состояние указано в state.
См. также QMovie::state().
[slot] void QMovie::stop()
Останавливает фильм. QMovie переходит в состояние NotRunning и прекращает излучать updated() и resized(). Если снова вызвать start(), фильм начнет воспроизводиться с начала.
Если QMovie уже находится в состоянии NotRunning, эта функция ничего не делает.
См. также 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/qt-5.9/qmovie.html