1.效果
我们实现一个组件铺满滚动区的效果
错误效果
2.简述
在设计器里边用滚动区很简单,先这样然后这样就可以了。。。
但是手写代码没理解的话就容易出现不显示,加了布局器没拉伸的效果。如上没铺满示例。
重要的就是这个
setWidgetResizable(true);
文档解释
这个属性用于控制滚动区域是否需要调整视图小部件的大小。
如果这个属性被设置为false(默认值),滚动区域表示它的小部件的大小。不管这个属性是什么,你都可以使用widget()->resize()以编程方式调整小部件的大小,滚动区域会自动调整到新的大小。
如果这个属性设置为true,滚动区域将自动调整小部件的大小,以避免滚动条,或者利用额外的空间。
3.代码
QWidget *pWidgetF = new QWidget(this);
QVBoxLayout *pLayout = new QVBoxLayout(pWidgetF);
pLayout->setContentsMargins(0,6,0,6);
for(int i = 0 ; i < 50;i++){
QPushButton *pBtn = new QPushButton(this);
pBtn->setText("按钮");
pLayout->addWidget(pBtn);
}
pLayout->addStretch();
QScrollArea *pScrollArea = new QScrollArea(this);
pScrollArea->setWidgetResizable(true);//!!!注意 不加这个widget不会被ScroolArea拉伸 而是原有大小
pScrollArea->setWidget(pWidgetF);
pScrollArea->setStyleSheet("QScrollArea{border:none; background:red;}");