QPixmap
来源:互联网 发布:浪潮软件利好消息 编辑:程序博客网 时间:2024/06/06 16:40
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);设置缓冲区内只能放一张图片,这样就会替换原来的图片,就可以加载新的图片了!
为按钮添加图标:
QPixmap m_pixmap("res/pre.png");
QIcon m_icon;
m_icon.addPixmap(m_pixmap);
ui->pre->setIcon(m_icon);
ui->pre->setIconSize(QSize(40,40));
- QPixmap
- QPixmap
- QPixmap
- QPixmap
- QPixmap
- QPixmap
- paint QPixMap
- QPixmap类
- QPixmap 透明
- QPixmap注意事项
- QPixmap vs. QImage
- QPixmap::loadFromData内存泄露
- QT QPixmap、QBitmap、QImage
- QPixmap save to png
- QPixmap显示图片
- QPixmap/QImage/QPicture
- QPixmap/QImage/QPicture
- QPixmap 和 QImage区别
- 客户端接入支付宝过程遇到的错误(版本号:1.0)
- 常见网络编程面试题整理
- HDFS Short-Circuit Local Reads
- OC的命名方法--转载
- Codeforces Round #262 (Div. 2) A
- QPixmap
- javascript中"=="和"==="区别
- 苹果所有常用证书,appID,Provisioning Profiles配置说明及制作图文教程(精)
- 快速排序
- javascript常用加入收藏与设为首页代码
- MFC内部运行来龙去脉追踪
- shell编程空格的使用
- Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home键
- javascript node element