• 15332阅读
  • 7回复

请教QSplashScreen启动画面显示gif动画图片的问题 [复制链接]

上一主题 下一主题
离线907398237
 
只看楼主 倒序阅读 楼主  发表于: 2010-10-26
— 本帖被 XChinux 执行加亮操作(2010-10-26) —
我定义一个类CSplash,继承QSplashScreen。构造函数

       movie = new QMovie(":/Resources/ball.gif");     
       int i = movie->frameCount();
       frontPix = movie->currentPixmap();
      gif_label = new QLabel(" ",this);
      gif_label->setMovie(movie);
      movie ->start();

       .........

图片是动画的,但是程序运行时没有动画效果,只是一个静止的图片。
另外, frameCount() 和 currentPixmap() 函数返回值也有问题,得不到
帧数和当前的pixmap.不知道为什么。请高手解答。
离线davis45
只看该作者 1楼 发表于: 2010-10-27
不知道你用的QT版本多少,因为在QT安装目录下的\plugins\imageformats中没有qgif.dll
谢谢大家的指教
离线907398237
只看该作者 2楼 发表于: 2010-10-29
回 1楼(davis45) 的帖子
qt4.6.1,库没有问题,都连上了,把程序放在QSplashScreen中不能实现动态效果,如果放在QWidget窗口程序有动态效果,感觉QSplashScreen像是把自己构造函数中所定义的代码都阻塞了,不能起作用,试过QMovie、QTimer,都不起作用。

只看该作者 3楼 发表于: 2015-11-11

楼主,请问你解决了么??我现在也是这个问题,研究了好几天了,QMovie、QTimer我试过,都不行
离线roywillow

只看该作者 4楼 发表于: 2015-11-11
目测是splash screen里进行的操作把界面的线程给阻塞了
把那些加载、后台处理之类的操作用另外的线程进行试试,或者在里面加上processEvents
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线圣域天子

只看该作者 5楼 发表于: 2015-11-12
回 roywillow 的帖子
roywillow:目测是splash screen里进行的操作把界面的线程给阻塞了
把那些加载、后台处理之类的操作用另外的线程进行试试,或者在里面加上processEvents (2015-11-11 21:21) 

反了,是主线程的操作把splashscreen的动画阻塞了。

一般需要把逻辑代码移到子线程中

界面的处理留给主线程操作
离线roywillow

只看该作者 6楼 发表于: 2015-11-12
回 圣域天子 的帖子
圣域天子:反了,是主线程的操作把splashscreen的动画阻塞了。
一般需要把逻辑代码移到子线程中
....... (2015-11-12 17:12) 

啊我说的就是这个意思,splash的动画不就是在界面线程里进行的嘛,然后界面操作只能在主线程里进行XD
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线圣域天子

只看该作者 7楼 发表于: 2015-11-13
回 roywillow 的帖子
roywillow:啊我说的就是这个意思,splash的动画不就是在界面线程里进行的嘛,然后界面操作只能在主线程里进行XD (2015-11-12 23:30) 

哦哦~~~
快速回复
限100 字节
 
上一个 下一个