Qt QScrollArea 用法 QScrollArea不显示 QScrollArea没铺满

文章目录

        • 1.效果
        • 2.简述
        • 3.代码

1.效果

我们实现一个组件铺满滚动区的效果
Qt QScrollArea 用法 QScrollArea不显示 QScrollArea没铺满_第1张图片
错误效果
Qt QScrollArea 用法 QScrollArea不显示 QScrollArea没铺满_第2张图片

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;}");

你可能感兴趣的:(Qt,QScrollArea用法,QScrollArea代码生成,QScrollArea)