QPixmap显示图片 label大小自适应

1.这是一个基础的介绍,分享一个很好地博客,QPainter画家,QImage QPixmap看做画布

  1. // 创建画家类对象

  2. QPainter p(this); // 指定绘图设备,其中设备可以是控件QLabel,也可以是先在QImage上画图,然后设置在控件

    ui->label->setPixmap(QPixmap::fromImage(Img));

https://blog.csdn.net/qq_32619837/article/details/103698140https://blog.csdn.net/qq_32619837/article/details/103698140

2. 使用QPixmap在QLable上显示图片时,会经常存在label和图像尺寸自适应的问题:

首先如果想要设置铺满lable,要有如下设置

ui.m_pLabelImg->setScaledContents(true); //让图片填充满QLabel

 再配合scale函数,就可以实现你想要的结果:铺满lable或者保持图片比例

其中scaled函数中几个参数的说明,看下边这个博客就可以

【Qt】QPixmap按比例缩放图片。_momodosky的博客-CSDN博客_qpixmap 等比例缩放

#自适应lable
        width = QtImg.width()  ##获取图片宽度
        height = QtImg.height()  ##获取图片高度
        if width / self.label.width() >= height / self.label.height():  ##比较图片宽度与label宽度之比和图片高度与label高度之比
            ratio = width / self.label.width()
        else:
            ratio = height / self.label.height()
        new_width = width / ratio  ##定义新图片的宽和高
        new_height = height / ratio

        jpg_out = QtGui.QPixmap(QtImg).scaled(int(new_width), int(new_height), QtCore.Qt.IgnoreAspectRatio,
                                              QtCore.Qt.SmoothTransformation)
        self.label.setPixmap(jpg_out)

 

你可能感兴趣的:(QT,python,qt)