一、前言
在软件开发中,软件中经常有些区域是动态布局的,这就让你很难预测该区域的大小,在布局时就不能将其大小固定死,滚动区域就发挥了很大的用处,使用滚动区域,就算动态布局,也可以可大可小。
二、效果展示
三、详解
QScrollArea实际是一个嵌套容器,它由两部分组成:scrollArea、scrollAreaWidgetContents;
- scrollArea是滚动区域;
- scrollAreaWidgetContents是内部容器;
- 当QScrollArea的尺寸 < 内部容器的尺寸时,就会出现滚动条(横纵都适用);
- 使用ui edit拖拽一个QScrollArea时,会自动new一个内部容器,但是使用代码生成QScrollArea时,一定要自己设置内部容器;
- 设置内部容器使用setWidget(QWidget*)接口;
- Tips:设置内部容器,最好在内部容器部件已经布局好之后,最好将其附到滚动区域里去(官方文档建议);
四、示例代码
QScrollArea* scrollArea = new QScrollArea(this);
QWidget* scrollWidget = new QWidget(this);
QVBoxLayout* layout_scrollWidget = new QVBoxLayout(scrollWidget);
layout_scrollWidget->setMargins(0);
layout_scrollWidget->setSpacing(0);
...
layout_scrollWidget->addWidget(xxx);
...
scrollArea->setWidget(scrollWidget); //给ScrollArea添加内部部件
scrollArea->setWidgetResizable(true); //自动调整大小