Skip to content

Latest commit

 

History

History

Lesson_10.AutoSizeImage

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

图片自适应窗口大小变化

此例是在Lesson5的基础上改进的,解决了窗口中图片过大时不能缩小窗口的问题。

问题分析

Qt布局的缩放不是无限制的,默认大小是0~16777215,即 0x00000000 ~ 0x00FFFFFF。 当布局中存在不能将尺寸缩小到0的控件时,布局缩小的最小的控件大小后将不再缩小。 Lesson5 的布局中直接放置了一个label,虽然设置了属性 scaledContents 为真,但还是 存在窗口不能缩小的问题。下面详细解释其中的工作流程:

  1. 布局中的控件会随窗口变化而改变大小,但其最小大小受控件最小大小影响;
  2. scaledContents 为真时,图片会自适应窗口大小;
  3. 窗口变化导致 label 大于图像本身时,label根据布局变大,图像根据label变大;
  4. 尝试窗口小于图片时,图片写入label,图片本身的大小成为了 label 的大小, 即限制了 label 的最小大小,进而布局不能进一步变小,导致窗口不能变小。

解决办法

给label不设置布局,而是把它放入一个widget,让他跟随parent尺寸变化。由于没有 布局的限制,widget大小不受child的影响。

程序说明

  1. EzQtTools 中新增了 AutoSizeLabel 类。
  2. main.py 中 重新定义了 Video 类用于解析视频图像,示例了如何自定义上下文菜 单和信号参数。

写在最后

终于写完毕业论文了,可以好好研究以下Qt的各种问题。已经解决了多媒体播放的问题,请看 下一讲(第十一课)。更新时间为 2020年12月27日。