pyqt5_sizePolicy
sizePolicy是一个相当复杂的系统
其实pyqt在默认的sizePolicy下已经相当好看了,不过他还是允许自定义的
首先,sizePolicy是QWidget类的属性
所以这是属于控件的,主要使用对象就是程序中的那些控件
各种概念
minimumSize:widget允许的最小大小
minimumSizeHint:widget建议的最小大小
maximumSize:widget允许的最小大小
sizeHint:widget建议的大小
size:目前widget的实际大小
sizePolicy:widget所采用的大小调控策略
horizontalPolicy
verticalPolicy
hasHeightForWidth
hasWidthForHeight
这里面每一个都看起来很简单,但当他们联系起来时,Puzzling!
其中处于顶端的是sizePolicy
其他的属性均为其服务
-----------------------------------------------------
经过痛苦的研究,基本明白了个大概
对于sizePolicy,minimumSize sizeHint minimumSizeHint是起绝对作用的三个属性
可以将其分为两类
min sys: minimumSize&minimumSizeHint
hint sys: sizeHint‘控件建议大小’
min sys中的两个属性联合提供一个‘控件最小大小’值
联合机制:当minimumSize未设置(未设置指其值为QSize(0,0) or QSize())时,‘控件最小大小’取minimumSizeHint的值;
当minimumSize有设置,‘控件最小大小’取minimumSize的值,忽略minimumSizeHint
本质上,sizePolicy是为每一个控件提供一个范围区间
Fixed/Maximum Policy:
[‘控件最小大小’,‘控件建议大小’],若此区间=Ø,
也就是‘控件最小大小’>‘控件建议大小’的情况,取[‘控件最小大小’,unlimited)
Minimum/Preferred/Expanding Policy:
[‘控件最小大小’,unlimited)
非常简洁的policy,这是窗口中只有一个控件时实验出来的,那么他们交杂在一起会发生什么?
交杂原则:保证每一个控件的QSize都在其Policy归定的合理QSize区间内
最小对齐原则:如果在满足交杂原则的前提下,取最小值时,控件之间有能力进行对齐(对齐方向为布局管理器的另一个方向e.g. 横->纵),
那么在最小值的设定上要求保持对齐,ps: 此原则大概是为了美观,取最大值时没有限制,完全取决与控件的区间
e.g.
有两个widget均采用Maximum Policy
两者的区间分别为QSize(10,10)-QSize(300,300);QSize(50,50)-QSize(500,500)
那么最终两者实际放在一起区间的调整为: QSize(10,50)-QSize(300,300);QSize(50,50)-QSize(500,500)
本探究的环境为fedora,寻找到的规律确实奇葩,和官方文档并不匹配,不知MacOS,Windows上是什么效果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现