这里写目录标题
- 1. 概述
- 2. 滚动条策略
- 3. 子控件
- 4. 尺寸提示
1. 概述
QScrollArea 用于显示滚动区域框架内的子控件的内容。如果控件超过框架的大小,视图可以提供滚动条,以便可以查看子控件的整个区域。子控件必须使用 setWidget() 指定。但是在 QDesigner 里面QScrollArea 会自动的创建一个 QWidget 名字叫 scrollAreaWidgetContents 这个类作为子控件 ,到时候我们只需要把我们想要的界面元素布局好。这个scrollAreaWidgetContents 直接 setLayout一下就好了。
也可以指定自己的子控件
例如:
QLabel *imageLabel = new QLabel;
QImage image("happyguy.png");
imageLabel->setPixmap(QPixmap::fromImage(image));
scrollArea = new QScrollArea;
scrollArea->setBackgroundRole(QPalette::Dark);
scrollArea->setWidget(imageLabel);
上面的代码创建了一个包含图像标签的滚动区域(如下图所示)。缩放图像时,滚动区域可以提供必要的滚动条:
2. 滚动条策略
滚动条外观取决于当前设置的滚动条策略。您可以使用从 QAbstractScrollArea 继承的功能来控制滚动条的外观。就是控制显示不显示的功能。
例如,可以设置 QAbstractScrollArea::horizontalScrollBarPolicy 和 QAbstractScrollArea::verticalScrollBarPolicy 属性。或者,如果您希望滚动条在滚动区域的内容更改时动态调整,则可以使用 horizontalScrollBar() 和 verticalScrollBar() 函数来够访问滚动条,并在滚动区域的内容更改时使用 QScrollBar::setValue() 函数设置滚动条的值。
3. 子控件
您可以使用 widget() 函数检索子控件。可以使用 setWidgetResizable() 函数使视图大小调整。子控件的对齐方式可以用 setAlignment() 指定。
一般来说。要滚动条能够显示的条件是 widget() 所指向的控件的 大小大于 QScrollArea 的大小,这样就能把滚动条显示
就像下面的 子控件(scrollAreaWidgetContents )大小 为 高度固定 400 ,但是 QScrollArea 的高度大小是 171 就会出滚动条。(这个 只需要设置scrollAreaWidgetContents 最小高度为400就行)
当把 QScrollArea 的高度大小改为 410 ,滚动条就消失了。
两个方便的函数 ensureVisible() 和 ensureWidgetVisible() 确保内容的某个区域在视口内可见,必要时通过滚动内容。
4. 尺寸提示
使用滚动区域显示自定义子控件的内容时(其实也就是 上面的例子 scrollAreaWidgetContents ),请务必确保将子小部件的大小提示设置为合适的值。如果子小部件使用标准 QWidget,则可能需要调用 QWidget::setMinimumSize() 以确保小部件的内容在滚动区域中正确显示。 这个在 QDesigner 里面拖拽的时候的QScrollArea 就会自动生成一个 QWidget 类型的 scrollAreaWidgetContents, 我们只需要设置好 这个 scrollAreaWidgetContents 的 minimumSize 的其中一个或者所有属性就可以自动的出滚动区域了。和第3 点是一个道理。