多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ## 伸展策略 实际的布局中,其实伸展因子用的比较少,因为很少有遇到控件必须按照某些比例来拉伸的,实际编程中最常用的是伸展策略 ![](https://qtguide.ustclug.org/images/ch06/ch06-05-01.png) 策略的基本标志位 | 枚举标志位 | 数值 | 描述| | --- | --- |--- | QSizePolicy::GrowFlag | 1 | 可增长标志,如果有必要的话,可以在建议尺寸之外继续增长。 | |QSizePolicy::ExpandFlag |2 | 尽量扩展标志,能占多大空间就占多大。| |QSizePolicy::ShrinkFlag | 4 |可收缩标志,如果有必要的话,可以在缩小到建议尺寸之后继续缩小。 | | QSizePolicy::IgnoreFlag |8 |忽略建议尺寸,这个增长方式最野蛮,能占多大空间就占多大空间 | - 建议尺寸就是通过控件的 sizeHint() 函数获取的尺寸,这个尺寸通常由 Qt 类库自己根据要显示的内容计算。建议尺寸是伸展策略的基准 策略的枚举常量 |枚举常量 |数值 |拉伸特点| 描述| | --- | --- | --- | --- | | QSizePolicy::Fixed| 0 |固定 |以建议尺寸固定住,对于水平方向是固定宽度,垂直方向是固定高度。| | QSizePolicy::Minimum | GrowFlag| 被动拉大 |以建议尺寸为最小尺寸,如果有多余的空间就拉伸,没有多余的空间就保持建议尺寸。被动扩张。| | QSizePolicy::Maximum | ShrinkFlag | 被动缩小 |以建议尺寸为最大尺寸,窗口缩小时,如果其他控件需要,该控件可以尽量缩小为其他控件腾出空间。| | QSizePolicy::Preferred |GrowFlag, ShrinkFlag |被动伸缩 |以建议尺寸为最佳尺寸,能屈能伸,窗口缩小时可以为其他控件腾出空间,窗口变大时,也可以占据其他控件不需要的空闲空间。基类 QWidget 默认是这种策略。被动扩张。| | QSizePolicy::Expanding |GrowFlag, ShrinkFlag ,ExpandFlag |主动扩张 |建议尺寸仅仅是明智的建议,但控件基本不采用。这个模式也是能屈能伸,但它倾向于主动扩张,它会尽可能占据新增的区域。| | QSizePolicy::MinimumExpanding| GrowFlag ,ExpandFlag |主动扩张 |以建议尺寸作为最小尺寸,主动扩张,尽可能占据新增的区域。| | QSizePolicy::Ignored |ShrinkFlag , GrowFlag, IgnoreFlag | 野蛮扩张 忽略建议尺寸,虽然能屈能伸,但是它会尽最大可能占据空间。| 推荐方法 1. 如果希望控件尺寸在水平或垂直方向固定住,那么把该维度的策略设置为 QSizePolicy::Fixed。 2. 如果希望控件被动拉伸,其他控件不需要空间时这个控件才会占据新增区域,那么可以用 QSizePolicy::Preferred (尺寸下限是隐含的最小建议尺寸)或者 QSizePolicy::Minimum(尺寸下限是建议尺寸)。 4. 如果希望控件尽量拉伸,主动扩张,那就把策略设置为 QSizePolicy::Expanding。