Класс 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 &fileName, const QByteArray &format = QByteArray(), QObject *parent = nullptr) | |
| QMovie(QIODevice *device, const QByteArray &format = QByteArray(), QObject *parent = nullptr) | |
| QMovie(QObject *parent = nullptr) | |
| виртуальный | ~QMovie() |
| QColor | backgroundColor() const |
| QMovie::CacheMode | cacheMode() const |
| int | номерТекущейКадры() const |
| QImage | текущийИзображение() const |
| QPixmap | текущийPixmap() const |
| QIODevice * | device() const |
| QString | имяФайла() const |
| QByteArray | формат() const |
| int | количествоКадров() const |
| QRect | прямоугольникКадры() const |
| bool | isValid() 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 | 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 и Пример анимации.
Документация по типам членов
перечисление QMovie::CacheMode
Это перечисление описывает различные режимы кэширования QMovie.
| Константа | Значение | Описание |
|---|---|---|
QMovie::CacheNone |
0 |
Нет кэшированных кадров (по умолчанию). |
QMovie::CacheAll |
1 |
Все кадры кэшированы. |
перечисление 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() для получения копии обновлённого кадра.
END_OF_DOCUMENT_MARKER
[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.2/qmovie.html