我想qt 中QPixmap这个类大家都很熟悉,它可以很简单的在标签上贴图;例如:

QPixmap p;

p.load("1.png");

label->setPixmap(p);

就这么简单,但是我今天突然发现个问题,就是:

QPixmap p;

p.load("1.png");

label->setPixmap(p);

p.load("2.png");

label->setPixmap(p);

p.load("1.png");

label->setPixmap(p);

当用同一个p,即全局变量时,你加载图片1,显示图片1;再加载图片2,显示图片2;可当你再想变回图片一时,你再加载图片一,不好使了,变不回来了,还是显示图片二,你在加载个图片三,好使,再想变回图片二,不好使了。。。。。。

这是为神马呢???

原来,p.load()是将图片加载到缓冲区中:QPixmapCache,当你加载图片二是,图片一并没有被覆盖,此时缓冲区内有图片一和图片二,当你再次加载图片一时,以为缓冲区里应经有了,所以p.load(),直接返回true;但是图片仍是图片二,所以不能显示回图片一!

解决办法很简单,有三种办法:

一、     直接定义局部变量,这样每次都是新的缓冲区;

二、     当再次加载图片时,先将缓冲区清空,    QPixmapCache::clear();然后再加载;

三、     在初始化函数里写:QPixmapCache::setCacheLimit(1);设置缓冲区内只能放一张图片,这样就会替换原来的图片,就可以加载新的图片了!

最新文章

  1. 在c#中get同步访问http
  2. DIV+CSS 清除浮动方法总结
  3. LINUX测试环境部署nginx(五)
  4. Distance Between Points
  5. Win7 DCOM 配置中我的电脑出现红色箭头并且无属性显示的解决方法
  6. C# DataGridViewComboBoxColumn 数据绑定
  7. C#实现插入排序法
  8. vijosP1016 北京2008的挂钟
  9. CentOS PHP-5.4.8 编译安装之初体验
  10. Codeforces 474F - Ant colony
  11. Java 算法
  12. charAt()的功能
  13. 201521123029《Java程序设计》第1周学习总结
  14. js 哈希路由原理实现
  15. 浅谈JavaScript的事件(事件类型)
  16. python高阶函数式编程
  17. recompose mapProps
  18. weinre 远程调试 安装 配置
  19. vue.js及项目实战[笔记]— 05 WebPack
  20. 关于jQuery.when()用法的调研

热门文章

  1. ARM 处理器的几个相关术语
  2. 利用 FFmpeg 和 ImageMagick, AVI 转 GIF(不失真)
  3. 一个iOS图片选择器的DEMO(实现图片添加,宫格排列,图片长按删除,以及图片替换等功能)
  4. 【python】pathlib库
  5. 修改PHP网站默认首页
  6. .net学习笔记---Asp.net的生命周期之二页生命周期
  7. 脚踏实地学C#2-引用类型和值类型
  8. javascript中window.open()与window.location.href的区别
  9. hdu 4033 二分几何
  10. mvc-1mvc和类(2)