2017年12月11日 星期一

Qt--QListWidget做缩略图显示

开发环境:Win7 x86 ,VS2010,Qt5.5

问题描述:我用QListWidget做缩略图显示,当图片很多时,缩略图只能显示50个左右,并且其它非缩略图的图片也无法显示。

分析过程:怀疑图片缓冲区太小,调大缓冲区后故障现象没任何改变。

          编译Qt,跟踪调试,发现 malloc 失败导致图片不能显示。
          查看内存,进程占用内存居然达到1.7G,问题的原因已十分明显了。
          一个1M左右的图片,加载后内存占用了30M左右,图片加载太多把内存资源耗尽。
          缩略图只是显示变小,内存中仍保存完整的初始加载的图片。
          尝试降低图片的 quality,无果。
          通过 scaled 缩小图片的幅面,成功。

总结:    因片面地认为缩略图占用很少的内存,导致问题的出现,
          也因为这个原因,问题出现时没查看内存占用情况,
          所以遇到异常问题,迅速查看一下内存和CPU的占用情况是必要的。

沒有留言:

張貼留言