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

http://blog.csdn.net/a324539017/article/details/6567186

QPixmap的缓冲区的更多相关文章

  1. QPixmap有缓冲区的

    我想qt 中QPixmap这个类大家都很熟悉,它可以很简单的在标签上贴图:例如: QPixmap p; p.load("1.png"): label->setPixmap(p ...

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

    我想qt 中QPixmap这个类大家都很熟悉,它可以很简单的在标签上贴图:例如: QPixmap p; p.load("1.png"): label->setPixmap(p ...

  3. 4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(

     新建项目13IO 13IO.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets network CON ...

  4. 4.关于QT中的QFile文件操作,QBuffer,Label上加入QPixmap,QByteArray和QString之间的差别,QTextStream和QDataStream的差别,QT内存映射(

     新建项目13IO 13IO.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets network CON ...

  5. scanf()中清除输入缓冲区的几种方法归纳

    应用场景:我们使用多个scanf()的时候,如果输入缓冲区还有数据的话,那么scanf()就不会询问用户输入,而是直接就将输入缓冲区的内容拿出来用了,这就导致了前面的错误影响到后面的内容,为了隔离这种 ...

  6. php缓冲区详解

    什么是缓冲区(buffer)? 简单而言,缓冲区的作用就是,把输入或者输出的内容先放进内存,而不显示或者读取.至于为什么要有缓冲区,这是一个很广泛的问题,如果有兴趣,可以在网山找下资料. 其实缓冲区最 ...

  7. 缓冲区溢出利用——捕获eip的傻瓜式指南

    [译文] 摘要:为一个简单的有漏洞程序写一个简单的缓冲区溢出EXP,聚焦于遇到的问题和关键性的教训,提供详细而彻底的描述 内容表:1. I pity the fool, who can't smash ...

  8. SEED信息安全实验系列:缓冲区溢出漏洞实验

    缓冲区溢出漏洞实验 本课程详细出自http://www.shiyanlou.com/courses/231,转载请注明出处. 一.实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情 ...

  9. Apache service named reported the following error(OS 10055)由于系统缓冲区空间不足或队列已满解决办法?

    apache启动失败报错: The Apache service named reported the following error:>>> AH00451: no listeni ...

随机推荐

  1. 解决gdb 调试 core 文件函数名显示为问号的问题

    关于gdb调试core文件总是一堆问号的问题 问题描写叙述:已经在编译选项中增加了-g,可是查看core文件时.还是一堆问号,使用的命令为:gdb -c core 解决方式:因为gdb -c core ...

  2. Android app 第三方微信支付接入详解

    微信支付做了好几遍了,都没有出现什么棘手的问题,下面一一为大家分享一下,欢迎吐槽. 还是老样子,接入微信的支付要第一步添加微信支付官方的包libammsdk.jar 首先就处理略坑的一个问题,app应 ...

  3. JavaScript window.location物

    演示样例 注意 方法 常常使用window.location.它的结构总是记不住.简单梳理下.方便以后查询. 演示样例 URL:http://b.a.com:88/index.php? name=ka ...

  4. 买不起360随声wifi怎么办?这些都不是问题

    只需轻松一步,点击开启共享 软件下载地址:http://download.csdn.net/detail/lxq_xsyu/6384265 如果身边没有数据线怎么办?? 使用方法: 1.用手机连接Wi ...

  5. 度小于所述过程:KanboxEnt.exe

    在防火墙管理.见未知的过程"KanboxEnt.exe" 程序信息: 版权声明:本文博主原创文章.博客,未经同意不得转载.

  6. 西门子S7报文解析

    1.报文的基本格式 1.1 第1和第2个字节是:固定报文头03 00,这里我们就用到三种报文: a.初始化 b. 读 c.写,都是这种格式: 1.2 第3和第4个字节是:整个报文的长度: 其它部分就是 ...

  7. 如何更好的利用redis

    原文地址http://oldblog.antirez.com/post/take-advantage-of-redis-adding-it-to-your-stack.html @(syoka)[re ...

  8. PHP设置时区,记录日志文件的方法

    关键字:PHP 时区 时间 日志 <html> <body> <?php date_default_timezone_set('Asia/Hong_Kong'); //s ...

  9. virtualbox--在xp设置ubuntu虚拟机网络 主宿机能互通,宿机能通过主机上网Host-Only + Bridged

    由于最近要写一个简单的C/S模式的程序,刚好虚拟机装了个ubuntu12.04TLS,正好拿来当服务器测试,但是发现无法ping通.刚学习ubuntu,实在不熟,苦苦弄了2小时,才弄明白,在此记录一下 ...

  10. 关于 Facebook 的 React 专利许可证

    本文转载自:酷 壳 – CoolShell 作者:陈皓 随着 Apache.百度.Wordpress 都在和 Facebook 的 React.js 以及其专利许可证划清界限,似乎大家又在讨论 Fac ...