• 8440阅读
  • 17回复

用QMoive加载gif的问题(急!在线等) [复制链接]

上一主题 下一主题
离线jingping1231
 
只看楼主 倒序阅读 楼主  发表于: 2011-11-25
关键词: QMoivegif
         dialog=new QDialog(this);
        dialog->setFixedSize(250,35);
        dialog->setStyleSheet("background-color: rgb(30,144,255)");
        dialog->setWindowFlags(Qt::FramelessWindowHint);
        QLabel* movieLabel=new QLabel(dialog);
        QMovie *movie = new QMovie(":/htsdResource/Resources/002b.gif");
         movieLabel->setMovie(movie);
         movieLabel->show();
         movie->start();
         dialog->show();
请问这段代码有什么问题吗?为什么gif图片显示不出来,显示效果如图:
离线muqiujuan
只看该作者 1楼 发表于: 2011-11-25
1,主要原因是你的movieLabel的大小是默认大小,并且没有让图片(或动画自动适应大小),所以看不见动画,
加上这句代码movieLabel->setScaledContents(true);后看看效果,会在左上角有很小的动画播放;

2,如果嫌动画太小,可以设置movieLabel的大小;movieLabel->resize(250,35); 让movieLabel和dialog的大小一样就更清楚啦
离线jingping1231
只看该作者 2楼 发表于: 2011-11-25
回 1楼(muqiujuan) 的帖子
还是不行啊,我看到一些帖子说要config gif,但不知道要怎么config gif
看到有的帖子说
在ped.pro中加入

LIBS+=-lgif -lpng -ljpeg -lpthread

CONFIG+=gif

但我不知道ped.pro又是什么东东啊?
离线ninsun

只看该作者 3楼 发表于: 2011-11-25
QLabel* movieLabel=new QLabel();
QMovie *movie = new QMovie(":/htsdResource/Resources/002b.gif");
movieLabel->setMovie(movie);
movieLabel->show();

直接main函数里这么写试试
离线jingping1231
只看该作者 4楼 发表于: 2011-11-25
dialog=new QDialog(this);
        dialog->setFixedSize(250,35);
        dialog->setStyleSheet("background-color: rgb(30,144,255)");
        dialog->setWindowFlags(Qt::FramelessWindowHint);
        QLabel* movieLabel=new QLabel(dialog);
        QMovie *movie = new QMovie(":/htsdResource/Resources/002b.gif");
       if(movie->isValid())//总为false     {         movieLabel->setMovie(movie);
         movieLabel->show();
         movie->start();
    }
         dialog->show();
离线jingping1231
只看该作者 5楼 发表于: 2011-11-25
dialog=new QDialog(this);
        dialog->setFixedSize(250,35);
        dialog->setStyleSheet("background-color: rgb(30,144,255)");
        dialog->setWindowFlags(Qt::FramelessWindowHint);
        QLabel* movieLabel=new QLabel(dialog);
        QMovie *movie = new QMovie(":/htsdResource/Resources/002b.gif");
       if(movie->isValid())//总为false    
{         movieLabel->setMovie(movie);
         movieLabel->show();
         movie->start();
    }
         dialog->show();

加了个测试语句if(movie->isValid())发现这句话一直为false,这是为什么呀,我的目录下确实有这个图片,我换了其他图片也一样,都返回false。
离线jingping1231
只看该作者 6楼 发表于: 2011-11-25
看来是根本不识别gif格式啊
离线ninsun

只看该作者 7楼 发表于: 2011-11-25

我这里可以……
话说,你有没有建立那个资源文件啊……
目录下有,没有资源文件肯定显示不了的……
离线jingping1231
只看该作者 8楼 发表于: 2011-11-25
回 7楼(ninsun) 的帖子
什么资源文件啊?
离线muqiujuan
只看该作者 9楼 发表于: 2011-11-25
将002b.gif图片放到与工程同一路径下,比如你的工作在F:\Qt-Program\里,图片也放这里。


然后修改代码
QMovie *movie = new QMovie("../002b.gif");
离线ninsun

只看该作者 10楼 发表于: 2011-11-28
QMovie *movie = new QMovie(":/htsdResource/Resources/002b.gif");

这里的以:(冒号)开头的路径,就是资源文件的路径
你的程序里没有建立资源文件的话是不可能调用成功的
离线lastsoup
只看该作者 11楼 发表于: 2011-11-30
编译时QT库需要增加对gif格式的支持,   configure时增加-gif选项
离线jingping1231
只看该作者 12楼 发表于: 2011-12-01
回 9楼(muqiujuan) 的帖子
试过了还是不行,换成png格式的图片就可以显示。我觉得还是Qt不支持gif格式的问题。
离线jingping1231
只看该作者 13楼 发表于: 2011-12-01
回 9楼(muqiujuan) 的帖子
还是不行啊, 把gif替换成png格式就可以显示出来,我感觉还是Qt不支持gif格式的问题。
离线jingping1231
只看该作者 14楼 发表于: 2011-12-01
回 9楼(muqiujuan) 的帖子
还是不行,不支持gif格式,换png的能显示。
离线jingping1231
只看该作者 15楼 发表于: 2011-12-01
回 11楼(lastsoup) 的帖子
怎么configure啊,我没有configure过啊。
离线jingping1231
只看该作者 16楼 发表于: 2011-12-07
回 3楼(ninsun) 的帖子
有资源文件啊,不是说Qt默认支持png格式吗,难道支持gif格式不需要设置什么吗?
离线free510
只看该作者 17楼 发表于: 2011-12-07
在D:\Qt\2010.05\qt\plugins\imageformats下找到qgif4.dll、qgifd4.dll
然后再main里边QApplication::addLibraryPath("./plugins");
//在程序运行根目录下建\plugins\imageformats将qgif4.dll、qgifd4.dll放入
试试
快速回复
限100 字节
 
上一个 下一个