使用QLable显示图片

QLabel通常用于显示文本,但也可显示图片。通过QImage和QPixmap可以加载图片到QLabel,如果图片大小超过Label,则需调整Label大小或使用scaled()函数按比例缩放图片以适应Label,保持纵横比,并确保图像平滑。使用setGeometry设置Label位置和大小,结合scaled()进行图片缩放,能完整显示图片。

QLabel主要用来显示文本的组件,但是也有显示图片的方法,下面介绍一下如何用QL abel显示图片。

向QLabel中添加图片

可以使用QImage读取图片再通过QPixmap方法在QLabel中显示
也可以直接使用QPixmap读取图片,显示。他们的效果都是一样的。

    QImage img("wife.jpeg");
    ui->label->setPixmap(QPixmap::fromImage(img));
//    QPixmap pix;
//    pix.load("wife.jpeg");
//    ui->label->setPixmap(pix);

在这里插入图片描述
显然,这是因为label的大小,导致不能将图片全部显示出来,那么我们重新设置label大小是不是就可以了?

设置QLabel位置与大小

使用setGeometry函数

由于QLabel是从QWidget中继承而来,所以直接使用QWidget::setGeometry函数

void QWidget::setGeometry(int x, int y, int w, int h)

(x, y)表示其在窗口中的位置,(w, h)表示,确定位置后窗口的宽和长,这样就确定了一个窗口具体的位置和大小。
这里,我们将QLabel设置成和MainWindow一样大,再看一下QLabel显示图片。

    QImage img("wife.jpeg");
    int WindowW = this->width();
    int WindowH = this->height();
    ui->label->setGeometry(0, 0, WindowW, WindowH);
    ui->label->setPixmap(QPixmap::fromImage(img));

在这里插入图片描述
虽然显示了图片很多内容,但是还是不能将图片全部显示出来,这里就可以使用缩放的方法,将图片按照一定的比例缩放,然后再放入QLabel中来。

scaled()函数缩放图片

QImage QImage::scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const
  1. size表示给定缩放后的尺寸。
  2. aspectRatioMode 选择缩放的模式,如果是IgnoreAspectRatio模式(缺省)即按照给定的尺寸显示;
    KeepAspectRatio,则按照给定的尺寸将图像缩放为内部大小尽可能大的矩形,从而保留纵横比。
    KeepAspectRatioByExpanding,则图像将缩放为一个外部尺寸尽可能小的矩形,从而保持纵横比。
    我们这里选择KeepAspectRatio模式即可。
  3. TransformationMode 模式,是否让图像看起来更平滑。
    Qt::FastTransformation(缺省),执行的更快,没有平滑。
    Qt::SmoothTransformation,使得图像更平滑。
    这里选择Qt::SmoothTransformation。
    QImage img("wife.jpeg");
    int WindowW = this->width();
    int WindowH = this->height();
    ui->label->setGeometry(0, 0, WindowW, WindowH);
    QImage scalimg = img.scaled(ui->label->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
    ui->label->setPixmap(QPixmap::fromImage(scalimg));

在这里插入图片描述
这样就可以看到完整的老婆了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值