Qt图片自适应显示控件

Qt图片自适应显示控件

  • 写在前面
  • 直接上代码
  • 如何使用
  • 显示效果

写在前面

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

直接上代码

头文件

#ifndef MYIMAGE_H
#define MYIMAGE_H#include 
#include 
#include //使用painterevent,让图片随widget的大小自适应的调整
class MyImage:public QWidget
{Q_OBJECTpublic: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

显示效果

显示效果


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部