3.QT图片完整显示(联机VS2022版)

目录

前言:

技能:

操作:

1.用QPixmap接收图片

2.调整显示

3.进一步调整

参考:


前言:

通过Qlabel结合QPixmap、保持宽高比、缩放、平滑转换的图片显示

项目文件上传至资源demo3


技能:

QPmxmap类读取文件图片

QSize类接收Qlabel大小

scaled( )设置合适显示大小

Qlabel显示QPiaxmap图片

操作:

1.用QPixmap接收图片
QPixmap* pic;
pic= new QPixmap("pic.jpg");
//QPixmap * pic= new QPixmap("qt.jfif");

当然可以直接用合在一起下面的一行代码

至于图片文件,Qlabel支持的格式好像还挺多的,比如我保存的是.jfif格式的也是正常显示

至于文件路径,把文件放在项目同一目录下就可以直接用简单的名字,如果不想把文件复制过来,那就用绝对路径,比如这样

    pic= new QPixmap("C:\\Users\\Administrator\\Desktop\\qt.jfif");
2.调整显示

如果只完成第一步的话已经可以显示图片了,但是很可能因为图片规格和Qlabel不完全融洽导致只能显示图片的一部分,这时候就要调整显示的图片(或者Qlabel)

首先读取Qlabel的大小,然后把pic缩放到Qlabel的大小再显示

 //完整展开一步一步的可以看下面那一版
 QPixmap* pic;
 pic= new QPixmap("qt.jfif");
 QSize size1 = ui.label->size();   
 // 读Qlabel大小
 ui.label->setPixmap(pic->scaled(size1));
 // 设置Pixmap缩放然后显示
//和上面的代码一样,只是分步了
QPixmap* pic;
pic= new QPixmap("qt.jfif");
QSize size1 = ui.label->size();  // 读取大小
*pic=pic->scaled(size1);   //缩放
ui.label->setPixmap(*pic); //显示
3.进一步调整

我发现如果仅仅按第2步,调整的结果是这样的

能看出奇怪的地方吗?

它只是分别把宽和高调整了,并没有保持宽高比例,所以图片会变形,查看QT中scaled函数的帮助文档 ,描述的那是相当清楚啦,

QT中scaled函数链接是这个:

(这是在QT里面搞出的的链接,外国的直接点不开,看图片或者去 QT帮助里面自己看文档把)

http://qthelp://org.qt-project.qtgui.6210/qtgui/qpixmap.html#QPixmap

其中aspectration表示宽高比,默认ignore忽视,图片表示很形象。

函数完全体是这样的(VS2022中的)

QPixmap scaled(const QSize &s, Qt::AspectRatioMode aspectMode = Qt::IgnoreAspectRatio,
               Qt::TransformationMode mode = Qt::FastTransformation) const;

我们只需要 改变后面的默认参数成KeepAspect....就可以

至于最后一个参数表示转换的模式,默认快速转换FastTrans....也可以换成平滑的SmoothTrans,

QT中参数介绍在下面 

于是,保持宽高比缩放平滑转换的图片显示就有了

QPixmap* pic;
pic= new QPixmap("qt.jfif");
QSize size1 = ui.label->size();
*pic=pic->scaled(size1, Qt::KeepAspectRatio, Qt::SmoothTransformation);
ui.label->setPixmap(*pic);

参考:

【Qt学习系列】3.Qt信号与槽

  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

都是报错快CV吧

还能打赏?好活当赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值