使用QLable显示图片

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

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));

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

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用QImage和QPixmap来在QLabel显示图片。你可以使用QImage的load方法来加载图片,然后使用QPixmap的fromImage方法将其转换为QPixmap,最后使用QLabel的setPixmap方法来显示图片。另外,你也可以直接使用QPixmap的load方法来加载图片显示QLabel中。这两种方法的效果是一样的。以下是一个示例代码: ```cpp QImage img("wife.jpeg"); ui->label->setPixmap(QPixmap::fromImage(img)); // 或者 QPixmap pix; pix.load("wife.jpeg"); ui->label->setPixmap(pix); ``` 在这个示例中,我们首先使用QImage的load方法加载了一张图片,然后使用QPixmap的fromImage方法将其转换为QPixmap,并将其设置QLabel显示内容。另外,你也可以直接使用QPixmap的load方法来加载图片,并将其设置QLabel显示内容。 希望这个回答对你有帮助! #### 引用[.reference_title] - *1* [使用QLable显示图片](https://blog.csdn.net/LSC__lsc/article/details/129649752)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Qt中用QLabel显示图片](https://blog.csdn.net/qq_22642239/article/details/123031925)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值