Класс 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 | цвет_фона() const |
| QMovie::CacheMode | cacheMode() const |
| int | текущий_номер_кадра() const |
| QImage | текущий_кадр() const |
| QPixmap | текущий_pixmap() 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 | установить_cacheMode(QMovie::CacheMode mode) |
| void | установить_устройство(QIODevice *device) |
| void | установить_имя_файла(const QString &fileName) |
| void | установить_формат(const QByteArray &format) |
| void | установить_масштабированный_размер(const QSize &size) |
| int | скорость() const |
| QMovie::MovieState | состояние() const |
Общедоступные слоты
| bool | перейти_к_следующему_кадру() |
| void | приостановить(bool paused) |
| void | установить_скорость(int percentSpeed) |
| void | запустить() |
| void | остановить() |
Сигналы
| void | ошибка(QImageReader::ImageReaderError error) |
| void | завершено() |
| void | кадр_изменен(int frameNumber) |
| void | изменен_размер(const QSize &size) |
| void | начато() |
| void | состояние_изменено(QMovie::MovieState state) |
| void | обновлено(const QRect &rect) |
Статические общедоступные члены
| QList<QByteArray> | поддерживаемые_форматы() |
Подробное описание
Этот класс используется для отображения простых анимаций без звука. Если вы хотите отображать видео и медиа-контент, используйте фреймворк мультимедиа 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().
Вы можете контролировать скорость воспроизведения анимации, вызвав установить_скорость(), который принимает процент от исходной скорости в качестве аргумента. Приостановите анимацию, вызвав приостановить(true). QMovie перейдет в состояние Приостановлен и сгенерирует сигнал stateChanged(). Если вы вызовите приостановить(false), QMovie вернется в состояние Запущен и возобновит анимацию. Чтобы остановить анимацию, вызовите остановить().
Некоторые форматы анимации позволяют задавать цвет фона. Вы можете вызвать установить_цвет_фона() для установки цвета или цвет_фона() для получения текущего цвета фона.
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 перейдёт в состояние Paused и испустит stateChanged(Paused); в противном случае перейдёт в состояние Running и испустит stateChanged(Running).
См. также state().
[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.
[signal] void QMovie::stateChanged(QMovie::MovieState state)
Этот сигнал испускается каждый раз, когда меняется состояние фильма. Новое состояние указано в state.
См. также QMovie::state().
[slot] void QMovie::stop()
Останавливает фильм. QMovie переходит в состояние NotRunning и перестаёт испускать 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()
Возвращает размер кадров после масштабирования.
Эта функция была добавлена в 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.15/qmovie.html