QMovie类
QMovie类是一个方便的类,用于使用QImageReader播放电影。[更多...
头文件 | #include <QMovie> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake | QT += gui |
继承 | QObject |
公共类型
枚举 | CacheMode { CacheNone, CacheAll } |
枚举 | MovieState { NotRunning, Paused, Running } |
属性
公共函数
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) | |
虚 | ~QMovie() |
QColor | backgroundColor() const |
QBindable<QMovie::CacheMode> | bindableCacheMode() |
QBindable<int> | bindableSpeed() |
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() |
详细描述
此类用于显示不带声音的简单动画。
首先,通过传递文件名或包含动画图像格式的QIODevice指针到QMovie构造函数,创建一个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()。
您可以通过调用setSpeed()来控制电影播放速度,该函数接受原始速度的百分比作为参数。通过调用setPaused(true)暂停电影。然后,QMovie将进入暂停状态并发出stateChanged()。如果您调用setPaused(false),QMovie将重新进入运行状态并再次开始电影。要停止电影,请调用stop()。
某些动画格式允许您设置背景颜色。您可以调用setBackgroundColor()来设置颜色,或调用backgroundColor()来获取当前背景颜色。
currentFrameNumber()返回当前帧的序列号。动画中的第一帧序列号为0。frameCount()返回动画中的总帧数,如果图像格式支持此功能。您可以通过调用loopCount()来获取电影应该在完成前循环的次数。nextFrameDelay()返回当前帧应显示的毫秒数。
您可以通过调用setCacheMode()来指示QMovie缓存动画帧。
调用supportedFormats()以获取QMovie支持的格式的列表。
成员类型文档
枚举QMovie::CacheMode
此枚举描述了QMovie的不同缓存模式。
常量 | 值 | 描述 |
---|---|---|
QMovie::CacheNone | 0 | 不缓存任何帧(默认)。 |
QMovie::CacheAll | 1 | 缓存所有帧。 |
枚举QMovie::MovieState
此枚举描述了QMovie的不同状态。
属性文档
[可绑定]
cacheMode : CacheMode
注意:此属性支持QProperty绑定。
此属性包含电影的缓存模式
当底层动画格式处理器不支持直接跳转到动画中的特定帧或“回滚”到动画开头(用于循环)时,缓存帧可能会很有用。此外,如果图像数据来自顺序设备,底层动画处理器无法回溯到已读取数据的帧,这使得循环变得完全不可能。
为了帮助这种情况,可以指导QMovie对象缓存帧,这会在对象的生命周期内以保留帧在内存中的额外内存成本。
默认情况下,此属性设置为CacheNone。
[可绑定]
speed : int
注意:此属性支持QProperty绑定。
此属性包含电影的速率
速度以原始电影速度的百分比表示。默认速度是100%。示例
QMovie movie("racecar.gif"); movie.setSpeed(200); // 2x speed
成员函数文档
[显式构造函数]
QMovie::QMovie(QObject *parent = nullptr)
构造一个QMovie对象,将父对象传递给QObject构造函数。
参见setFileName()、setDevice()和setFormat()。
[显式构造函数]
QMovie::QMovie(QIODevice *device,const QByteArray &format = QByteArray(),QObject *parent = nullptr)
构建一个QMovie对象。QMovie将从设备中读取图像数据,它假设该设备是打开且可读的。如果格式不为空,QMovie将使用图像格式格式解码图像数据。否则,QMovie将尝试猜测格式。
父对象被传递给QObject的构造函数。
[显式]
QMovie::QMovie(const QString &fileName, const QByteArray &format = QByteArray(), QObject *parent = nullptr)
构建一个QMovie对象。QMovie将从fileName读取图像数据。如果格式不为空,QMovie将使用图像格式格式来解码图像数据。否则,QMovie将尝试猜测格式。
父对象被传递给QObject的构造函数。
[虚函数 noexcept]
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
。
[信号]
void QMovie::error(QImageReader::ImageReaderError error)
当播放过程中发生错误error时,这个信号由QMovie发出。QMovie将停止电影,并进入QMovie::NotRunning状态。
另请参阅lastError() 和 lastErrorString。
QString QMovie::fileName() const
返回QMovie从其中读取图像数据的文件名。如果没有分配文件名,或者分配的设备不是文件,则返回一个空的QString。
另请参阅 setFileName()和device()。
[信号]
void QMovie::finished()
当电影播放完成时发出此信号。
另请参阅 QMovie::stop。
QByteArray QMovie::format() const
返回QMovie解码图像数据时使用的格式。如果没有分配格式,则返回空的QByteArray()。
另请参阅 setFormat。
[信号]
void QMovie::frameChanged(int frameNumber)
当帧号变为frameNumber时发出此信号。您可以调用currentImage或currentPixmap来获取帧的副本。
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
。
[槽]
bool QMovie::jumpToNextFrame()
跳转到下一帧。成功时返回true
;否则返回false
。
QImageReader::ImageReaderError QMovie::lastError() const
返回在尝试读取图像数据时发生的最新错误。
另请参阅 lastErrorString。
QString QMovie::lastErrorString() const
返回尝试读取图像数据时发生的最新错误的可读表示形式。
另请参阅 lastError。
int QMovie::loopCount() const
返回电影在完成之前将循环的次数。如果电影只会播放一次(没有循环),则loopCount返回0。如果电影永远循环,则loopCount返回-1。
请注意,如果图像数据来自顺序设备(例如套接字),则只有当cacheMode设置为QMovie::CacheAll时,QMovie才能循环电影。
int QMovie::nextFrameDelay() const
返回QMovie在更新动画中的下一帧之前将等待的毫秒数。
[信号]
void QMovie::resized(const QSize &size)
当当前帧被调整至size时,会发出此信号。这种效果有时在动画中用作替换帧的替代方案。您可以调用currentImage()或currentPixmap()以获取已更新帧的副本。
QSize QMovie::scaledSize()
返回帧的缩放尺寸。
另请参阅setScaledSize()和QImageReader::scaledSize。
void QMovie::setBackgroundColor(const QColor &color)
对于支持此功能的图像格式,此函数将背景颜色设置为color。
另请参阅backgroundColor。
void QMovie::setDevice(QIODevice *device)
将当前设备设置为device。QMovie将在电影运行时从这个设备读取图像数据。
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::setPaused(bool paused)
如果暂停为真,QMovie将进入暂停状态并发出状态改变(Paused); 否则它将进入运行状态并发出状态改变(Running)。
另请参阅状态()。
void QMovie::setScaledSize(const QSize &size)
设置缩放帧大小为大小。
另请参阅scaledSize()和QImageReader::setScaledSize。
[slot]
void QMovie::start()
开始播放电影。 QMovie将进入运行状态,并在电影播放过程中开始发出updated()和resized()。
如果QMovie处于暂停状态,此函数等同于调用setPaused(false)。如果QMovie已经是运行状态,则此函数什么都不做。
[signal]
void QMovie::started()
在调用QMovie::start()之后和QMovie进入QMovie::Running状态时发出此信号。
QMovie::MovieState QMovie::state() const
返回QMovie的当前状态。
另请参阅MovieState和stateChanged。
[signal]
void QMovie::stateChanged(QMovie::MovieState state)
每当电影的状态发生改变时都会发出此信号。新的状态由状态指定。
另请参阅QMovie::state。
[slot]
void QMovie::stop()
停止播放电影。 QMovie进入NotRunning状态,并停止发出updated()和resized()。如果再次调用start(),电影将从头开始重新播放。
如果QMovie已经是NotRunning状态,则此函数不做什么。
[static]
QList<QByteArray> QMovie::supportedFormats()
返回QMovie支持的图像格式的列表。
参见QImageReader::supportedImageFormats。
[信号]
void QMovie::updated(const QRect &rect)
当当前帧中的矩形区域 rect 被更新时,会发出此信号。您可以通过调用 currentImage() 或 currentPixmap() 获取更新帧的副本。
© 2024 The Qt Company Ltd. 本文档中的文档贡献归各自所有者所有。本文档依据自由软件基金会公布的 GNU自由文档许可证版本1.3 条款进行许可。Qt及其相应标志是芬兰及 worldwide countries 的 The Qt Company Ltd. 的商标。所有其他商标均归各自所有者所有。