QSizePolicy属性介绍

QSizePolicy描述着控件在布局管理器中水平方向和垂直方向大小拉伸的策略,重点是在布局管理器中,由布局管理器来控制控件两个方向的大小是如何变化,而这个策略与sizeHint()属性(控件的建议大小,控件必须是在布局管理器中该属性才有效)息息相关。

1.enum QSizePolicy::Policy

QSizePolicy::Fixed

0

控件的大小固定为sizeHint的推荐大小,不能在改变;

QSizePolicy::Minimum

GrowFlag

控件的大小最小为sizeHint的推荐大小,可以往大了拉伸,但最小不可小过sizeHint;

QSizePolicy::Maximum

ShrinkFlag

控件的大小最大为sizeHint的推荐大小,可以往小了缩小,但最大不可大过sizeHint;

QSizePolicy::Preferred

GrowFlag | ShrinkFlag

sizeHint大小比较的合理,最小还是sizeHint,但是拉伸比较倾向于不超过sizeHint;

QSizePolicy::Expanding

GrowFlag | ShrinkFlag | ExpandFlag

顾名思义就是扩大呗,最小不能小过sizeHint,拉伸就随意了;

QSizePolicy::MinimumExpanding

GrowFlag | ExpandFlag

与Minimum差不多,最小为sizeHint,不能再小了,也可以拉伸。区别就是和同一方向的其他控件一块布局时会尽可能的占有空间,除非它们也是这个策略;

QSizePolicy::Ignored

ShrinkFlag | GrowFlag | IgnoreFlag

控件的大小不再与sizeHint相关,可以尽情的拉伸,也可以缩小比sizeHint建议的小,毕竟忽略了;

如果布局管理器中只有一个控件被设置这些策略时,后四个基本没什么区别,除了缩小方面最后一个可以小于sizeHint(),放大方面都是尽可能的拉伸;而如果布局管理器中放置了两个控件,以垂直方向为例,不同的策略会影响控件占用的空间优势,比如控件1设置为Preferred,控件2设置为Expanding,此时2会占用更可能多的空间,而1只能缩小到最小(sizeHint的大小);如果1为MinimumExpanding,2不变,两者占用比例相同;如果1为Ignored,2不变,控件1直接看不到了;

如果按占用空间的优势排序的话,应该是这样:

MinimumExpanding=Expanding>Preferred=Minimum=Ignored>Maximum=Fixed

目前我理解的只是这样,可能还有错误,做个参考还行,不要全信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值