找回密码
 立即注册
收起左侧

Qlabel中没法显示JPG

17
回复
10377
查看
[复制链接]
累计签到:108 天
连续签到:1 天
来源: 2015-7-14 17:17:37 显示全部楼层 |阅读模式
5Qter豆
本帖最后由 xiongxiong 于 2015-7-17 11:13 编辑

我写了个小程序,主要的作用是成批导入图片并在QLabel中显示出来,在debug版中,jpg是可以显示的,但是release版中jpg就没法显示了。。。请问一下谁知道是什么原因吗??

依赖库已经包含了,如下图:



附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

这是在我电脑上运行的结果, 不论是Debug还是Release都能显示jpg图像。 这个plugins的目录是放在exe文件同目录下的。 PS:你的界面做得挺好看的。赞一个!
回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2015-7-14 17:17:38 显示全部楼层
这是在我电脑上运行的结果,
不论是Debug还是Release都能显示jpg图像。

这个plugins的目录是放在exe文件同目录下的。


PS:你的界面做得挺好看的。赞一个!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:108 天
连续签到:1 天
2015-7-15 01:34:07 显示全部楼层
求帮助啊,可能是什么原因造成这种情况的????
回复

使用道具 举报

累计签到:108 天
连续签到:1 天
2015-7-15 10:22:13 显示全部楼层
我补充一下我的问题:showImg是一个MyLabel类的对象,MyLabel类是我继承QLabel类实现的,并且重写了paintEvent()函数。重写的paintevent()函数的代码如下:
  1. void MyLabel::paintEvent(QPaintEvent *event)
  2. {
  3.     QLabel::paintEvent(event);//调用父类的event以显示背景
  4.     QPainter painter(this);
  5.     painter.setPen(QPen(Qt::red,1));
  6.     painter.drawRect(QRect(x,y,width,height));

  7. }
复制代码
然后现在用showImg->setPixmap()来显示jpg,在debug下可以显示,但是用release之后就没法显示了??
回复

使用道具 举报

累计签到:108 天
连续签到:1 天
2015-7-15 16:10:06 显示全部楼层
有谁遇到过类似的问题吗??在qt creator里面写的程序debug版还是release版,都能够从本地正常加载并显示png和jpg图片,但是将release文件夹下的exe文件拷贝出来独立运行,加载jpg图片就无法显示。对应的dll文件已经拷贝到程序运行目录下了,也已经调试过了不会是文件路径的问题。
回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2015-7-16 16:33:18 显示全部楼层
xiongxiong 发表于 2015-7-15 16:10
有谁遇到过类似的问题吗??在qt creator里面写的程序debug版还是release版,都能够从本地正常加载并显示pn ...

plugins目录下的imageformats拷过去了没?
【也就是plugins目录和exe文件在同一目录下。】
还有要在main函数的QApplication a下面加一行:
QApplication::addLibraryPath("./plugins");
回复

使用道具 举报

累计签到:108 天
连续签到:1 天
2015-7-17 11:10:19 显示全部楼层
Syylc120317 发表于 2015-7-16 16:33
plugins目录下的imageformats拷过去了没?
【也就是plugins目录和exe文件在同一目录下。】
还有要在main ...

这个方法也试过了,没有效果啊,还是会出现原来的问题,图片我更新了,麻烦你再看看图片中出现的错误
回复

使用道具 举报

累计签到:108 天
连续签到:1 天
2015-7-17 12:28:59 显示全部楼层
没有编译错误,也没有逻辑错误,因为调试过程中一切正常,但是发行的版本中就没办法显示图片。
回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2015-7-17 15:21:51 显示全部楼层
目测,paintEvent函数写的不对。QLabel::paintEvent(event);//调用父类的event以显示背景这句应该放在最后面。
回复

使用道具 举报

累计签到:108 天
连续签到:1 天
2015-7-17 16:43:21 显示全部楼层
Syylc120317 发表于 2015-7-17 15:21
目测,paintEvent函数写的不对。QLabel::paintEvent(event);//调用父类的event以显示背景这句应该放在最后 ...

还是不行呢。。。
http://pan.baidu.com/s/1gdGUFzd这个是源码地址,使用的是Qt4.8.5+qt creator2.8.0
回复

使用道具 举报

累计签到:108 天
连续签到:1 天
2015-7-17 20:26:08 显示全部楼层
Syylc120317 发表于 2015-7-17 15:21
目测,paintEvent函数写的不对。QLabel::paintEvent(event);//调用父类的event以显示背景这句应该放在最后 ...

你看看有空的时候能不能看一下
回复

使用道具 举报

累计签到:108 天
连续签到:1 天
2015-7-19 10:24:29 显示全部楼层
回来顶帖了。。。还是没有解决。。。。
回复

使用道具 举报

累计签到:108 天
连续签到:1 天
2015-7-20 17:39:20 显示全部楼层
Syylc120317 发表于 2015-7-20 09:13
这是在我电脑上运行的结果,
不论是Debug还是Release都能显示jpg图像。

真是太感谢了,这次可以了。我之前在exe的目录下确实放了plugnis文件夹,并且把需要的链接库都放进去了,但是还是不能显示jpg。这次是在plugins文件夹下又新建了一个imagefromats文件夹,然后把需要dll文件放到该文件夹里面,至此终于可以在release版本中显示jpg图片的。虽然不明白为什么必须这样做。
之前一直以为的是,程序在找需要的链接库是,默认都是在根目录下找的……所以只要在根目录下放了dll文件就可以了。。。。
回复

使用道具 举报

累计签到:108 天
连续签到:1 天
2015-7-20 17:51:03 显示全部楼层
问题已经解决了。在这里感谢论坛里@Syylc120317 的帮助,终于解决了这个问题。
之前遇到在程序中无法显示jpg的问题,首先想到的就是直接在根目录下添加链接库qjpeg4.dll,发现这样还是无法显示jpg。然后在网上找到第二种方法,在根目录下新建一个plugins文件夹并把需要用的qjpeg4.dll放到该文加件中,并在QApplication::AddLibraryPath()函数显示声明库所在的路径,发现还是无法显示jpg图片。到了最后,在plugins文件夹下又新建了一个文件夹imageformats,然后把需要的库文件放到该文件夹下,然后终于可以显示jpg图片了。
个人猜测,原因是qt在执行时必须要找到imageformats文件夹然后在再其中寻找需要的库,如果没有imageformats文件夹则qt程序也不会再在其他地方找库文件,而是认为程序已经“丢失了”需要的库支持,所以就无法显示了(不知道这样想对不对)。。。。
回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2015-7-22 09:35:58 显示全部楼层
xiongxiong 发表于 2015-7-20 17:51
问题已经解决了。在这里感谢论坛里@Syylc120317 的帮助,终于解决了这个问题。
之前遇到在程序中无法显示jp ...

你仔细看看,Qt的根目录下就是这么放的,plugins/xxx/xxx.dll
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-7-23 16:48:13 显示全部楼层
有源码分享 有问题解决方案 感谢楼主
回复

使用道具 举报

累计签到:108 天
连续签到:1 天
2015-7-23 17:31:08 显示全部楼层
z55716368 发表于 2015-7-23 16:48
有源码分享 有问题解决方案 感谢楼主

源码太烂了,现在写程序还是有很多不规范的地方,还得努力。。。

点评

慢慢来 慢慢来//////////////////  详情 回复 发表于 2015-7-24 08:36
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-7-24 08:36:32 显示全部楼层
xiongxiong 发表于 2015-7-23 17:31
源码太烂了,现在写程序还是有很多不规范的地方,还得努力。。。

慢慢来 慢慢来//////////////////
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了