Класс 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 | текущийPixmap() const |
| QIODevice * | device() const |
| QString | fileName() const |
| QByteArray | формат() const |
| int | количествоКадров() const |
- 31 функция унаследована от QObject
Свойства-слоты
- 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
Статические публичные члены
| const QMetaObject | staticMetaObject |
| QList<QByteArray> | supportedFormats() |
- 9 статических публичных членов унаследованы от QObject
Дополнительные унаследованные члены
- 9 защищенных функций унаследованы от 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 затем перейдет в состояние 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(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 считывает данные изображения. Если имя файла не было задано или назначенное устройство не является файлом, возвращается пустая строка.
См. также 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.
Для получения информации о том, почему анимированное изображение не валидно, см. 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/qt-5.12/qmovie.html