我写了一个qmovie显示gif动画的程序,有几个地方有点不解,请高手解答。
不解1:当gif动画运行了一遍之后frameCount才能返回帧数,否则返回0;
2:为什么调用jumpToFrame总是返回false。
程序如下:
/////////////////VxGifWidget .h
#include <QLabel>
#include <QMovie>
#include <QPainter>
class CVxGifWidget : public QLabel
{
public:
CVxGifWidget(const char *path = 0,QWidget *parent = 0);
private:
void enterEvent ( QEvent * event );
void leaveEvent ( QEvent * event );
private:
QMovie *m_pMovie;
int m_count;
bool m_bTrue;
};
/////////////////VxGifWidget .cpp
CVxGifWidget::CVxGifWidget(const char *path,QWidget *parent)
:QLabel(parent)
{
QPixmap m_pixmap(path);
setMinimumSize(m_pixmap.width(),m_pixmap.height());
setAlignment(Qt::AlignCenter);
m_pMovie = new QMovie(path);
setMovie(m_pMovie);
m_pMovie->start();
}
void CVxGifWidget::enterEvent ( QEvent * event )
{
m_count = m_pMovie->frameCount();
bool b = m_pMovie->jumpToFrame(10);
m_pMovie->setPaused(true);
}
void CVxGifWidget::leaveEvent ( QEvent * event )
{
m_pMovie->setPaused(false);
}
/////////////////main.cpp
#include <QApplication>
#include "VxGifWidget.h"
int main(int argc, char *argv[])
{
QApplication app(argc,argv);
QApplication::addLibraryPath("./plugins");
CVxGifWidget *m_gifShow = new CVxGifWidget("test.gif");
m_gifShow->show();
return app.exec();
}