打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
QPixmap

QPixmap


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


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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
QT显示图片 共两大类方法
QPixmap、QBitmap、QImage 與 QPicture
pyqt4制作透明无边框窗体
Qt可显示的图像类型
QT控件循环,该怎么处理
Qt学习之事件过滤器的使用(实现QLineEdit点击效果)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服