• 4053阅读
  • 0回复

一个qmovie显示gif动画的问题 [复制链接]

上一主题 下一主题
离线907398237
 
只看楼主 倒序阅读 楼主  发表于: 2010-11-05
— 本帖被 XChinux 执行加亮操作(2010-11-05) —
我写了一个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();
}

附件: GifShow.rar (1162 K) 下载次数:148
快速回复
限100 字节
 
上一个 下一个