Spec-Zone.ru › Qt 6.0

Класс QMovie

Класс QMovie — это вспомогательный класс для воспроизведения видео с помощью QImageReader. Подробнее...

Заголовок: #include <QMovie>
CMake: find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Наследует: QObject
  • Список всех членов, включая унаследованные

Открытые типы

enum CacheMode { CacheNone, CacheAll }
enum MovieState { NotRunning, Paused, Running }

Свойства

  • cacheMode : CacheMode
  • speed : int

Открытые функции

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()

Подробное описание

Этот класс используется для отображения простых анимаций без звука.

Сначала создайте объект QMovie, передав в конструктор QMovie либо имя файла, либо указатель на QIODevice, содержащий формат анимированного изображения. Вы можете вызвать 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.

class="valuelist">
Константа Значение Описание
QMovie::CacheNone 0 Кадры не кешируются (по умолчанию).
QMovie::CacheAll 1 Все кадры кешируются.

enum QMovie::MovieState

Это перечисление описывает различные состояния QMovie.

class="valuelist">
Константа Значение Описание
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(), чтобы получить копию кадра.

[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().

[slot] void QMovie::stop()

Останавливает анимацию. QMovie переходит в состояние Не запущено и прекращает отправлять 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()

Возвращает масштабированный размер кадров.

См. также 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.

См. также scaledSize() и QImageReader::setScaledSize().

QMovie::MovieState QMovie::state() const

Возвращает текущее состояние QMovie.

См. также MovieState и stateChanged().

[static] QList<QByteArray> QMovie::supportedFormats()

Возвращает список форматов изображений, поддерживаемых QMovie.

См. также QImageReader::supportedImageFormats().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qmovie.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API