Класс QMovie
Класс QMovie — это класс-обёртка для воспроизведения анимированных изображений с помощью QImageReader. Подробнее...
| Заголовок: | #include <QMovie> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Наследует: | QObject |
Типы публичного доступа
| Перечисление | CacheMode { CacheNone, CacheAll } |
| Перечисление | MovieState { НеЗапущен, Приостановлен, Запущен } |
Свойства
Функции публичного доступа
| QMovie(const QString &имяФайла, const QByteArray &формат = QByteArray(), QObject *родитель = nullptr) | |
| QMovie(QIODevice *устройство, const QByteArray &формат = QByteArray(), QObject *родитель = nullptr) | |
| QMovie(QObject *родитель = nullptr) | |
| virtual | ~QMovie() |
| QColor | цветФона() const |
| QMovie::CacheMode | cacheMode() const |
| int | номерТекущейКадры() const |
| QImage | текущееИзображение() const |
| QPixmap | текущаяПикча() const |
| QIODevice * | устройство() const |
| QString | имяФайла() const |
| QByteArray | формат() const |
| int | количествоКадров() const |
| QRect | прямоугольникКадра() const |
| bool | действителен() const |
| bool | перейтиККадру(int номерКадра) |
| QImageReader::ImageReaderError | последняяОшибка() const |
| QString | описаниеПоследнейОшибки() const |
| int | количествоПовторов() const |
| int | задержкаСледующегоКадра() const |
| QSize | масштабированныйРазмер() |
| void | установитьЦветФона(const QColor &цвет) |
| void | установитьCacheMode(QMovie::CacheMode режим) |
| void | установитьУстройство(QIODevice *устройство) |
| void | установитьИмяФайла(const QString &имяФайла) |
| void | установитьФормат(const QByteArray &формат) |
| void | установитьМасштабированныйРазмер(const QSize &размер) |
| int | скорость() const |
| QMovie::MovieState | состояние() const |
Слот публичного доступа
| bool | перейтиКСледующемуКадру() |
| void | приостановить(bool приостановить) |
| void | установитьСкорость(int процентСкорости) |
| void | запустить() |
| void | остановить() |
Сигналы
| 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, передав имя файла или указатель на 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 |
Анимация запущена. |
Документация по свойствам
[bindable] cacheMode : CacheMode
Примечание: Это свойство поддерживает привязки QProperty.
Это свойство содержит режим кэширования анимации.
Кэширование кадров может быть полезным, когда обработчик форматов анимации, на котором полагается QMovie для декодирования данных анимации, не поддерживает переход к определенным кадрам в анимации или даже "перемотку" анимации в начало (для повтора). Кроме того, если данные изображения поступают из последовательного устройства, обработчик анимации не может перейти обратно к кадрам, данные которых уже были прочитаны (что делает повторы невозможными).
Для решения таких ситуаций объект QMovie может быть настроен на кэширование кадров, что увеличит потребление памяти для хранения кадров в течение всего времени существования объекта.
По умолчанию это свойство установлено в CacheNone.
См. также QMovie::CacheMode.
[bindable] speed : int
Примечание: Это свойство поддерживает привязки QProperty.
Это свойство содержит скорость анимации.
Скорость измеряется в процентах от первоначальной скорости анимации. Значение по умолчанию — 100%. Пример:
QMovie movie("racecar.gif");
movie.setSpeed(200); // 2x speed Документация по функциям-членам
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 уже находится в состоянии Не запущено, эта функция ничего не делает.
См. также 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.1/qmovie.html