QLabel中用到了QMovie显示gif格式的动态图,但是程序放在别人电脑上,动态图就显示不出来了

___依米花___ 2014-09-01 02:35:30
rt,利用QLabel的setMovie方法,在程序中显示了一个动态图,在我的电脑上显示的好好地,但是程序放在其他人电脑上,动态图就显示不出来了,这是怎么个问题呢?求大神指点
...全文
887 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wm_hust 2015-11-20
  • 打赏
  • 举报
回复
找不到插件是因为在qt的安装目录下没有plugins,特别是在开发板上,要自己将plugins拷贝到安装目录下: /usr/local/Trolltech/QtEmbedded-4.8.5-arm。 我一开始在ubuntu上也画不出动画gif,在网上搜了并按照所介绍的方法做了还是不行,后来发现是gif文件的路径搞错了,改了之后 就能画了,还以为调用QApplication::addLibraryPath()起作用了呢。但在开发板上又画不出了,很郁闷。就去看qt源码,发现了QApplication::libraryPaths();这个函数,于是就打印出库的路径,发现根本没将插件的路径加进去。反而是打印出了/usr/lib/x86_64-linux-gnu/qt4/plugins ,这就说明是QT自己到这个目录下找的。而且源码里的注释也说明这一点。于是把QApplication::addLibraryPath() 放在 QApplication app(argc, argv);的后面,再运行就打印出了我添加的路径。 最后把QApplication::addLibraryPath() 去掉,gif照样画出来了,在开发板上把plugins拷贝到/usr/local/Trolltech/QtEmbedded-4.8.5-arm下(板子上原本是没有的)gif也画出来了。至此,该问题彻底解决。 网上有的人没把问题搞清楚,给别人造成了困扰,所以遇到问题还是要自己动脑子解决,别人的解答只能参考。
wm_hust 2015-11-20
  • 打赏
  • 举报
回复
更正一下:是在main() 的 return app.exec(); 之前调用: QStringList list = QApplication::libraryPaths(); for (QStringList::const_iterator it = list.constBegin(); it != list.constEnd(); ++it) { qDebug("lib dir: %s\n", (*it).toLatin1().data()); }
wm_hust 2015-11-20
  • 打赏
  • 举报
回复
我用的是qt4.8.5 QT会自动到安装目录(桌面:/usr/lib/x86_64-linux-gnu/qt4/plugins // 开发板:/usr/local/Trolltech/QtEmbedded-4.8.5-arm/plugins)下找插件的,不需要调用 // QApplication::addLibraryPath(),只需要指明gif文件的路径即可。 在ubuntu12.04 和开发板上都验证过了。网上有说要把QApplication::addLibraryPath() 放在 QApplication app(argc, argv);前面, 完全是瞎扯,要放在后面才能把路径加进去。 在main()的最后加上: QStringList list = QApplication::libraryPaths(); for (QStringList::const_iterator it = list.constBegin(); it != list.constEnd(); ++it) { qDebug("lib dir: %s\n", (*it).toLatin1().data()); } 可以看到库的路径。
蜗牛sf 2014-09-01
  • 打赏
  • 举报
回复
___依米花___ 2014-09-01
  • 打赏
  • 举报
回复
引用 5 楼 soso101 的回复:
去qt目录下找plugins这个目录,拷贝到你的程序目录下(方便),然后,在你的程序里加一行代码
void QCoreApplication::addLibraryPath ( const QString & path ) 
这个参数就是插件目录 比如
QCoreApplication::applicationDirPath () + “/plugins”
恩呢,谢谢你,我终于明白是怎么回事了,上午用到数据库的时候一直提示driver not loaded也是这个原因。谢谢你,非常感谢,膜拜~~
蜗牛sf 2014-09-01
  • 打赏
  • 举报
回复
去qt目录下找plugins这个目录,拷贝到你的程序目录下(方便),然后,在你的程序里加一行代码
void QCoreApplication::addLibraryPath ( const QString & path ) 
这个参数就是插件目录 比如
QCoreApplication::applicationDirPath () + “/plugins”
___依米花___ 2014-09-01
  • 打赏
  • 举报
回复
引用 3 楼 soso101 的回复:
plugins,你没有直接用,当qt框架用了,别人的机器上可能没有装qt,这需要你发布程序的时候随软件一起发布
能具体说说吗,还是不太明白是什么意思,我该怎么做呢?
蜗牛sf 2014-09-01
  • 打赏
  • 举报
回复
plugins,你没有直接用,当qt框架用了,别人的机器上可能没有装qt,这需要你发布程序的时候随软件一起发布
___依米花___ 2014-09-01
  • 打赏
  • 举报
回复
引用 1 楼 soso101 的回复:
看看是不是Qt的插件没有拷贝,放在程序目录下,addLibraryPath(插件目录)
插件?我没有用插件呐
蜗牛sf 2014-09-01
  • 打赏
  • 举报
回复 1
看看是不是Qt的插件没有拷贝,放在程序目录下,addLibraryPath(插件目录)

16,818

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧