Qt 布局、Qt::SizePolicy、MinimumSize、MaximumSize与控件大小的关系

Qt控件显示的最终大小受所在布局,sizepolicy、最小尺寸、最大尺寸这四个因素的控制。如果想固定控件的大小,可以把最小尺寸和最大尺寸设置成相同,这样控件大小就固定了,此时即使控件的sizepolicy设置为Expanding也不起作用。其中sizepolicy说明如下:

1. Fixed: 大小不能改变
2. Minimum: 推荐大小(sizeHint)就是最小的, 不能再被缩小, 但能放大.
3. Maximum: 推荐大小(sizeHint)就是最大的, 不能再被放大, 但能缩小.
4. Preferred:  控件的sizeHint()是他的sizeHint, 能被缩小, 放大.
5. Expanding: 控件可以自行增大或者缩小.
Preferred与Expanding的区别: 当有Preferred与Expanding的控件时, 只有Expanding的会被缩小与放大, Preferred的控件使用其sizeHint()作为大小, 大小不发生变化.
注:最新又新增了MinimumExpanding和Ignored,参见Qt文档中 QSizePolicy说明,英文解释更详尽 特别是can和should的区别,其中can对应GrowFlag和ShrinkFlag,should对应ExpandFlag
特别说明,sizepolicy只有与布局结合使用才有意义,详见QSizePolicy文档。举例如下:
(1)某个容器没有使用布局(比如widget),在其加入一个按钮(指定按钮的parent为容器),即使该按钮的sizepolicy为Expanding,该按钮也不会填充整个容器,而是保持sizeHint代表的大小;说明sizepolicy必须与布局结合。
(2)如果某个容器使用了布局,但通过parent的方式加入一个按钮,此时容器的布局没有管理该按钮,此时按钮的sizepolicy也是不生效、或者控件展示不完全符合sizepolicy预期的。
(3)如果某个容器使用了QVBoxLayout布局,而按钮使用了Fixed,按钮添加到该布局后,按钮会显示到布局中间,且大小为SizeHint。
(4)如果某个容器使用了QVBoxLayout布局,而按钮使用了Preferred,按钮添加到该布局后,按钮会填充整个容器。
(5)如果某个容器使用了QVBoxLayout布局,该布局添加了两个按钮,一个使用Preferred,一个使用Expanding,则Preferred按钮大小为该按钮的sizeHint,容器剩余空间会被Expanding按钮填充。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值