伸展因子

最后更新于:2022-04-02 02:12:02

[TOC] ## 概述 ![](https://qtguide.ustclug.org/images/ch06/ch06-05-01.png) ### 设计器修改 修改控件 举例:以三个按钮控件为例 1. 如果它们的伸展因子都是 0,那么三个按钮在水平布局里就是均匀拉伸 2. "One" 按钮的 "水平伸展" 设为 1,"Two" 按钮的 "水平伸展" 设为 2,"Three" 按钮的 "水平伸展" 设为 3,该行三个按钮的伸展因子之和为 1+2+3 == 6,新的空间就按照 1/6 ,2/6 ,3/6 的比例划分给这三个按钮 3. 如果把 "One" 按钮的 "水平伸展" 设为 2,"Two" 按钮的 "水平伸展" 设为 4,"Three" 按钮的 "水平伸展" 设为 0,那么在窗口拉大时,分配规律就是:先计算伸展因子之和 2+4+0 == 6,新的空间按照 2/6 ,4/6,0/6 的比例划分给这三个按钮 修改布局 通过修改布局的`layoutStretch` ![](https://qtguide.ustclug.org/images/ch06/ch06-05-06.png) ### 代码修改 1. 直接修改控件的伸展因子(不推荐直接修改控件) ``` //获取旧的尺寸策略作为底板,修改需要变动的伸展因子 QSizePolicy sp = ui->pushButton1->sizePolicy(); sp.setHorizontalStretch(2); //水平伸展因子 sp.setVerticalStretch(0); //垂直伸展因子 //把新策略设置给按钮1 ui->pushButton1->setSizePolicy(sp); ``` 2. 修改布局的伸展因子(推荐) ``` void setStretch(int index, int stretch) bool setStretchFactor(QWidget * widget, int stretch) bool setStretchFactor(QLayout * layout, int stretch) ```
';