//Label的大小自适应图片,Label随图片大小变化
QString bj (":/Resources/medalBtn/bj.png");
QImage image ;
image.load(bj) ;
ui->Label->setPixmap(QPixmap::fromImage(image));
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会压缩其他控件的位置,使得整个布局都变得凌乱了。比如下面的代码:
- QLabel *image1Label = new QLabel();
- QLabel *image2Label = new QLabel();
- image1Label->setPixmap(QPixmap::fromImage(img1));
- imgae2Label->setPixmap(QPixmap::fromImage(img2));
实践证明这种简单粗暴的方法是解决不了图片自适应窗口控件大小的问题的。那么既然是由于图片大小问题导致的原因,那在向QLabel加载图片的时候,将图片的大小缩变为QLabel的大小那么解决问题了。这样想是正确,图片缩放到QLabel的大小,那再加载到QLabel中的时候,就不会出现QLabe挤压其他空间的现象了。直接上代码看看: