[转] - QPixmap全局变量载入多张图片失效问题

我想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);设置缓冲区内只能放一张图片,这样就会替换原来的图片,就可以加载新的图片了!

时间: 2024-10-14 22:02:44

[转] - QPixmap全局变量载入多张图片失效问题的相关文章

input file 重复上传同一张图片失效的解决办法

项目中遇到上传图片,需要本地预览效果,测试时无意间发现,当选择A图片,然后更换为B图片,完全正常:当选择A图片,取消该图片,再测选择A图片后,发现不会再生成预览效果,出现了bug: 查找相关资料后,终于找到了两个解决办法: 方法一:来回切换input[type='file']的type属性值,可以是'text','button','button'....,然后再切换回来'file' 方法二:每次取消图片预览后,重置input[type='file']的value的值,如上图所示.

Android Handler 异步消息处理机制的妙用 创建强大的图片载入类

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38476887 ,本文出自[张鸿洋的博客] 近期创建了一个群.方便大家交流,群号:55032675 上一篇博客介绍了Android异步消息处理机制.假设你还不了解,能够看:Android 异步消息处理机制 让你深入理解 Looper.Handler.Message三者关系 . 那篇博客的最后,提出能够把异步消息处理机制不仅仅是在MainActivity中更新UI.能够用到别的地方

iOS 自己主动登录,登录过程中一直显示载入页

iOS开发中 假设client做的人性化一点肯定会考虑自己主动登录 事实上原理非常easy,就是再首次登录成功之后将username和password存入userdefault 下次登录的时候推断usedefault中有没有存储usernamepassword,假设有的话就绕过登录界面直接登录 可是在做的过程中遇到了一个问题 如今做一整理,供大家学习,指正 一般实现自己主动登录都是在载入页中去实现. 可是登录一般都须要与server通信.是异步的,而载入页在主线程中.这样就无法控制载入页在登录完

Core Animation学习总结

目录: The Layer Beneath The Layer Tree(图层树) The Backing Image(寄宿层) Layer Geometry(图层几何学) Visual Effects(视觉效果) Transforms(变换) Specialized Layers(专有图层) Setting Things in Motion Implicit Animations(隐式动画) Explicit Animations(显式动画) Layer Time(图层时间) Easing(缓

CSS float浮动的深入研究、详解及拓展(一)

概念目录 个人感悟之CSS代码的情感化思维 个人观点之浮动的意义仅仅是文字环绕显示而已 个人观点之浮动的本质是"包裹及破坏" 个人观点之目前大多数浮动应用都不是浮动应该做的 个人观点之浮动其实是个魔鬼.混球 一.引言 你我看待事物的方式不同,价值取向也不同,因为我们有着不同的世界观,价值观.这种世界观的差异不仅仅体现在实际的生活中,也反映在代码上.你我看待代码的方式,或者说是代码在我们情感层面的位置是不一样的,我这里说的是情感层面,与逻辑无关,与算法无关(虽然算法受情感影响).这种看待

Cocos2d-x 3.1.1 学习日志14--CocosStudio学习必看

听说Cocos Studio非常久了,主要是由于骨骼动画.眼下看来Cocos2d-x播放动画的方式仅仅有2种: 第一种:是播放序列帧动画,即将动画的每一帧都载入进缓存里,须要播放时再使用Animation类来播放,这样的方法简单暴力.应对一些细节要求低的动画场景的时候.这么干无伤大雅. 可是当动画帧数稍高的时候就会须要大量的图片,消耗资源非常大. 另外一种:是由Cocos2d-x提供的Action类来播放动画,这样的动画是在帧循环中靠调整每次渲染的坐标来打到动画效果.因为帧循环是1/60秒刷新一

css 简析folat

1.float?? 不知道大家是否还记得之前我们讲过页面是文档流,具体什么是文档流,我就不说了?于是我们页面布局如果用div的话,那么块状的元素是怎么排列的,什么叫块状自己去看? 如果我们呢用div布局的话,可能会遇到一个问题? 大家见没有.如果我想把xxxxx放到和Box-1排在一起,我应该怎么搞啊?可能你会说前面我们已经说了用定位可以解决,但是今天我们讲的是用float,来实现大家来看看我们如果加上float是不是就实现了? 真可以啊?开心完全满足了我们的要求.其实我们在实际里面也经常使用f

2015第10周五CSS—2

经常遇到的浏览器兼容性有哪些?如何解决? 1.浏览器默认的margin和padding不同.解决方案是加一个全局的*{margin:0;padding:0;}来统一. 2.IE6双边距bug:块属性标签float后,又有横行的margin情况下,在ie6显示margin比设置的大.解决方案是在float的标签样式控制中加入 display:inline;将其转化为行内属性.测试代码如下: <html> <head> <title>Demo</title> &

Paypal-Express Checkout快捷支付方式的android端开发心得(二)

一.前导 上一篇讲的不是非常好,这里再又一次讲一下. Paypal手机支付有2种形式: 1.Mobile Express Checkout,MEC,快捷支付 2.MPL 假设採用MEC支付方式,这样的方式点击Checkoutbutton之后的页面一直到付款结束都是url的形式,必须先有Web网站的支付,所以仅仅能通过WebView的形式进行记载,使用起来和Web网站效果一样,假设载入的页面中有些内容不想显示,能够隐藏. 二.MEC支付案例 package com.sound.chinabuye.