layoutStretch 用于控制Layout在被用户进行缩放时。里面控件的缩放比例。如一个水平布局里面有两个控件 一个 QLineEdit 和 QPushButton。首先将两个控件的尺寸策列的水平策略都设置为Expanding
。此时在将包含这两个控件的水平布局的 layoutStretch
进行如下设置。
运行程序就会发现,QPushButton控件的水平尺寸始终都是 QLineEdit的水平尺寸的 1/2。
查看ui文件的代码 发现
调用的是如下函数。
不在 Layout 中设置,也可以使用控件本身的尺寸策略的水平伸展进行设置。将QLineEidt的水平伸展设为 2 ,QPushButton 的水平伸展设置为 1. 在代码中则是如下
horizontalLayout = new QHBoxLayout();horizontalLayout->setSpacing(6);horizontalLayout->setObjectName(QStringLiteral("horizontalLayout"));lineEdit = new QLineEdit(Widget);lineEdit->setObjectName(QStringLiteral("lineEdit"));QSizePolicy sizePolicy1(QSizePolicy::Expanding, QSizePolicy::Fixed);sizePolicy1.setHorizontalStretch(2);sizePolicy1.setVerticalStretch(0);sizePolicy1.setHeightForWidth(lineEdit->sizePolicy().hasHeightForWidth());lineEdit->setSizePolicy(sizePolicy1);horizontalLayout->addWidget(lineEdit);pushButton = new QPushButton(Widget);pushButton->setObjectName(QStringLiteral("pushButton"));QSizePolicy sizePolicy2(QSizePolicy::Expanding, QSizePolicy::Fixed);sizePolicy2.setHorizontalStretch(1);sizePolicy2.setVerticalStretch(0);sizePolicy2.setHeightForWidth(pushButton->sizePolicy().hasHeightForWidth());pushButton->setSizePolicy(sizePolicy2);