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

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

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

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

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

【Qt】关于QLabel显示图片二三事_第2张图片

图2 图片显示及设置

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

ui->label->setScaledContents(true);

【Qt】关于QLabel显示图片二三事_第3张图片

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

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

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

你可能感兴趣的:(【程序设计】,qt,QLabel,图片,显示)