如果按占用空间的优势排序的话,应该是这样:MinimumExpanding=Expanding>Preferred=Minimum=Ignored>Maximum=Fixed
控件的大小不再与sizeHint相关,可以尽情的拉伸,也可以缩小比sizeHint建议的小,毕竟忽略了;
如果布局管理器中只有一个控件被设置这些策略时,后四个基本没什么区别,除了缩小方面最后一个可以小于sizeHint(),放大方面都是尽可能的拉伸;而如果布局管理器中放置了两个控件,以垂直方向为例,不同的策略会影响控件占用的空间优势,比如控件1设置为Preferred,控件2设置为Expanding,此时2会占用更可能多的空间,而1只能缩小到最小(sizeHint的大小);如果1为MinimumExpanding,2不变,两者占用比例相同;如果1为Ignored,2不变,控件1直接看不到了
若部件的拉伸因子大于0,则按照拉伸因子的比例分配空间;若拉伸因子为0,则只有在其他部件不需要空间时才会获得空间;也就是说若一些部件拉伸因子大于0,而一些部件拉伸因子为0,则只有拉伸因子大于0的部件会被拉伸,而拉伸因子为0的部件不会被拉伸。
若所有部件的拉伸因子都为0,则按照大小策略的规则对部件进行拉伸。
注意:若部件的大小策略为Fixed,则即使设置了拉伸因子,该部件也不会被拉伸。
以上规则可总结为,拉伸因子会使大小策略不起作用或失效(除了Fixed策略外)
除QSizePolicy::Ignored外,任何部件,都不能压缩得比最小大小更小(若未设置最小大小,则为最小大小提示),任何部件都不能拉伸得比最大大小更大。
参考:https://blog.csdn.net/hyongilfmmm/article/details/83015729
盒子模型由外到内,margin -> border -> padding -> content
margin代表一个控件的边框到另一个控件的边框的距离,属于容器外部距离。
padding代表自身边框到自身内部另一个容器边框之间的距离,属于容器内距离。