当前位置: 首页> 汽车> 新车 > 网推公司招聘_3d网站开发_广州排名推广_国际域名注册网站

网推公司招聘_3d网站开发_广州排名推广_国际域名注册网站

时间:2025/9/10 16:36:39来源:https://blog.csdn.net/qq_43361844/article/details/145618766 浏览次数: 2次
网推公司招聘_3d网站开发_广州排名推广_国际域名注册网站

使用 QSizePolicy 设置控件的伸缩因子

在 Qt 中,QSizePolicy 控制 控件如何在布局中伸缩。如果想要影响控件的大小调整行为,可以通过 QSizePolicy::setHorizontalStretch()QSizePolicy::setVerticalStretch() 设置伸缩因子

基本用法

假设我们有一个 QWidget 或者 QLabel 需要在 QHBoxLayoutQVBoxLayout 里调整大小: 

QLabel *label = new QLabel("Label");// 创建 QSizePolicy 对象
QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);// 设置水平和垂直的伸缩因子
sizePolicy.setHorizontalStretch(2); // 水平方向伸缩因子
sizePolicy.setVerticalStretch(1);   // 垂直方向伸缩因子// 应用到控件
label->setSizePolicy(sizePolicy);

这样 label 在水平上会比垂直方向更容易扩展,并且 QSizePolicy::Expanding 允许它占据多余的空间。 

 伸缩因子示例

假设在一个 QHBoxLayout 里,有两个 QLabel 控件:

QLabel *label1 = new QLabel("Label 1");
QLabel *label2 = new QLabel("Label 2");QSizePolicy sizePolicy1(QSizePolicy::Expanding, QSizePolicy::Expanding);
sizePolicy1.setHorizontalStretch(1);  // 伸缩因子 1QSizePolicy sizePolicy2(QSizePolicy::Expanding, QSizePolicy::Expanding);
sizePolicy2.setHorizontalStretch(2);  // 伸缩因子 2label1->setSizePolicy(sizePolicy1);
label2->setSizePolicy(sizePolicy2);QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(label1);
layout->addWidget(label2);QWidget *window = new QWidget;
window->setLayout(layout);
window->show();
  • label1label2QHBoxLayout 中会根据 HorizontalStretch 分配额外空间。

  • label11 份,label22 份,因此 label2 会比 label1 宽两倍

 

 

结合 addStretch() 进一步控制布局 

可以使用 layout->addStretch() 让控件之间有不同的占比:

QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(label1);
layout->addStretch(1);  // 添加伸缩空隙
layout->addWidget(label2);
layout->addStretch(2);  // 添加更大的空隙

addStretch(n) 让布局中的空白区域也有伸缩因子,配合控件的 QSizePolicy 可以更精准地调整布局。 

总结

  • QSizePolicy::setHorizontalStretch(int) 控制水平方向伸缩因子
  • QSizePolicy::setVerticalStretch(int) 控制垂直方向伸缩因子
  • 越大的数值,控件就越容易扩展,占据更多空间
  • 配合 QBoxLayout::addStretch(n) 可进一步优化布局

 

 

关键字:网推公司招聘_3d网站开发_广州排名推广_国际域名注册网站

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: