【Qt】关于QLabel显示图片二三事

   在Qt程序的开发过程中,使用QLabel显示图片是经常会遇见的事情,不知道看到此篇内容的同行者是否也遇到了如下的烦恼。

  • 加载图片之前,QLabel用于显示图片的边界范围不够明显。
  • 显示图片时,不能将图片内容完整的显示在QLabel范围内。
  • 加载图片过大时,窗体会自动放大,且无法缩小。
    Alt
图1 为QLabel添加边框示意图

   如图1所示,(a)和(b)分别显示了QLabel无边框和有边框的情况。可以根据个人喜好,对QLabel增添边框。我个人比较喜欢添加边框,能够很明显的感知图像显示区域。为QLabel增添边框,可以在Qt Designer中,将frameShape属性设置为Box。如(c)中的截图所示。也可以通过代码为QLabel添加边框。

ui->label->setFrameShape(QFrame::Box);

Alt

图2 图片显示及设置

   如图2所示,(a)和(b)分别给出了图片不完整显示和图片完整显示的结果。其实想让图片能够完整显示很简单,只需要将scaleContents属性设置为true即可。可以如图(c)所示,将scaleContents勾选上。也可以通过代码控制此属性。

ui->label->setScaledContents(true);

Alt

图3 图片自适应显示及设置

   如果图片分辨率过大,且不对显示区域大小进行设置的话,就会出现如图3-(b)所示的情况,窗体会变得特别大,还无法缩小。针对此类情况,可以将sizePolicy属性的水平策略和垂直策略设置成“Ignored”,如图3-(c)所示。之后运行就可以得到3-(a)所示的结果
   其实将QLabel的布局,以及图2和图3所示的两个属性配置好之后,就可以完成图片的完整显示和窗体自由拖拽缩放功能,不必再重写QLabel类来实现图片完整显示和显示区域随窗体大小变化重新resize图像大小。

个人声明:
   以上内容,纯属个人观点,不喜勿喷。未经本人同意,不得私自转载。博客中出现的代码仅供学习参考,不得有其他用途。若文中存在纰漏,或读者有更好的建议,欢迎留言探讨。也可邮箱联系:yxyx_0212@163.com

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值