QLabel与图片的相互自适应

本文详细介绍了如何让QLabel中的图片自适应窗口控件大小,并随着窗口尺寸改变而调整。通过QPixmap的scaled方法保持比例缩放图片,以及重写resizeEvent函数动态调整图片大小,实现QLabel图片的完美适配。
摘要由CSDN通过智能技术生成
//Label的大小自适应图片,Label随图片大小变化
QString bj (":/Resources/medalBtn/bj.png");
QImage image ;
image.load(bj) ;
ui->Label->setPixmap(QPixmap::fromImage(image));

ui->Label->resize(QSize(image.width(),image.height()));

//图片的大小自适应Label,图片随Label的大小变化而变化,这种变化因窗口变化而比较复杂,以下为转载

转自:http://blog.csdn.net/wusiyuan163/article/details/51107574

最近因为项目的需要,需要在QLabel标签上显示图片。那么问题就来:1.图片如何自适应窗口控件的大小;2.图片如何随着窗口大小的改变而改变呢?这就是两个比较基本也最常见的问题了。

解决问题一:图片如何自适应窗口控件的大小?

相对于第一个问题,最初的想法的就是QLabel用布局进行管理,这样岂不就是固定了QLabel的大小,如何图片岂不也就是固定在QLabel里面,可是后来尝试了这种方法之后就呵呵(实践永远是真理)。虽然QLabel用布局管理了,但是当QLabel加载了图片以后,由于图片的大小问题,QLabel会压缩其他控件的位置,使得整个布局都变得凌乱了。比如下面的代码:

[cpp]   view plain   copy   在CODE上查看代码片 派生到我的代码片
  1. QLabel *image1Label = new QLabel();  
  2. QLabel *image2Label = new QLabel();   
  3. image1Label->setPixmap(QPixmap::fromImage(img1));  
  4. imgae2Label->setPixmap(QPixmap::fromImage(img2));  

实践证明这种简单粗暴的方法是解决不了图片自适应窗口控件大小的问题的。那么既然是由于图片大小问题导致的原因,那在向QLabel加载图片的时候,将图片的大小缩变为QLabel的大小那么解决问题了。这样想是正确,图片缩放到QLabel的大小,那再加载到QLabel中的时候,就不会出现QLabe挤压其他空间的现象了。直接上代码看看:

[cpp]   view plain   copy  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值