Qt图片自适应显示控件

写在前面

用过Qt显示图片的同学就应该会发现,配置起来是真的难受,使用QLabel显示图片容易出现图片显示不全或者是图片太大导致控件被撑的变形,相当的难受。实现图片的自适应显示一般需要使用painterevent来配置页面,对于一些初学者来说配置可能会存在一定的个困难,毕竟脱离了.ui就可能不知道页面该怎么设计了。所以这里我就制作一个可自适应显示图片的控件,只需要将QWidget控件提升为该控件即可实现图片的自适应显示。

直接上代码

头文件

#ifndef MYIMAGE_H
#define MYIMAGE_H

#include <QWidget>
#include <QPainter>
#include <QImage>

//使用painterevent,让图片随widget的大小自适应的调整
class MyImage:public QWidget
{
    Q_OBJECT

public:
    explicit MyImage(QWidget *parent = nullptr);
    ~MyImage();
    void setImage(QImage image);
protected:
    void paintEvent(QPaintEvent *);
private:
    QImage image;
};






#endif // MYIMAGE_H

cpp文件

#include "myimage.h"

MyImage::MyImage(QWidget *parent)
{
    image.load(":/image.png");
}

MyImage::~MyImage()
{

}

void MyImage::paintEvent(QPaintEvent *)
{
    int width=this->width();
    int height=this->height();

    QPainter painter(this);
    painter.save();
    //调整图片的大小为窗体的大小
    image.scaled(width,height);

    //绘制出图片
    painter.drawImage(this->rect(),image);
    painter.restore();
    painter.setRenderHints(QPainter::Antialiasing|QPainter::TextAntialiasing);
//    painter.translate(width/2,height/2);

    //可以设置成正方形,最小的大小位200*200;
    int side =qMin(width,height);
    painter.scale(side/200,side/200);
}

void MyImage::setImage(QImage image)
{
    this->image=image;
    update();
}

如何使用

将以上两个文件添加到项目中(没有.ui文件),在显示界面添加一个QWidget控件,并将QWidget提升为MyImage,后续只需要使用setImage函数就可以刷新图片。
如图将显示图片的控件提升为MyImage

显示效果

显示效果

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值