Qt扫盲-QScrollArea理论总结

这里写目录标题

    • 1. 概述
    • 2. 滚动条策略
    • 3. 子控件
    • 4. 尺寸提示

1. 概述

QScrollArea 用于显示滚动区域框架内的子控件的内容。如果控件超过框架的大小,视图可以提供滚动条,以便可以查看子控件的整个区域。子控件必须使用 setWidget() 指定。但是在 QDesigner 里面QScrollArea 会自动的创建一个 QWidget 名字叫 scrollAreaWidgetContents 这个类作为子控件 ,到时候我们只需要把我们想要的界面元素布局好。这个scrollAreaWidgetContents 直接 setLayout一下就好了。
Qt扫盲-QScrollArea理论总结_第1张图片

也可以指定自己的子控件
例如:

  QLabel *imageLabel = new QLabel;
  QImage image("happyguy.png");
  imageLabel->setPixmap(QPixmap::fromImage(image));

  scrollArea = new QScrollArea;
  scrollArea->setBackgroundRole(QPalette::Dark);
  scrollArea->setWidget(imageLabel);

上面的代码创建了一个包含图像标签的滚动区域(如下图所示)。缩放图像时,滚动区域可以提供必要的滚动条:
Qt扫盲-QScrollArea理论总结_第2张图片

2. 滚动条策略

滚动条外观取决于当前设置的滚动条策略。您可以使用从 QAbstractScrollArea 继承的功能来控制滚动条的外观。就是控制显示不显示的功能。

例如,可以设置 QAbstractScrollArea::horizontalScrollBarPolicy 和 QAbstractScrollArea::verticalScrollBarPolicy 属性。或者,如果您希望滚动条在滚动区域的内容更改时动态调整,则可以使用 horizontalScrollBar() 和 verticalScrollBar() 函数来够访问滚动条,并在滚动区域的内容更改时使用 QScrollBar::setValue() 函数设置滚动条的值。

3. 子控件

您可以使用 widget() 函数检索子控件。可以使用 setWidgetResizable() 函数使视图大小调整。子控件的对齐方式可以用 setAlignment() 指定。

一般来说。要滚动条能够显示的条件是 widget() 所指向的控件的 大小大于 QScrollArea 的大小,这样就能把滚动条显示
就像下面的 子控件(scrollAreaWidgetContents )大小 为 高度固定 400 ,但是 QScrollArea 的高度大小是 171 就会出滚动条。(这个 只需要设置scrollAreaWidgetContents 最小高度为400就行)
Qt扫盲-QScrollArea理论总结_第3张图片
当把 QScrollArea 的高度大小改为 410 ,滚动条就消失了。
Qt扫盲-QScrollArea理论总结_第4张图片

两个方便的函数 ensureVisible() 和 ensureWidgetVisible() 确保内容的某个区域在视口内可见,必要时通过滚动内容。

4. 尺寸提示

使用滚动区域显示自定义子控件的内容时(其实也就是 上面的例子 scrollAreaWidgetContents ),请务必确保将子小部件的大小提示设置为合适的值。如果子小部件使用标准 QWidget,则可能需要调用 QWidget::setMinimumSize() 以确保小部件的内容在滚动区域中正确显示。 这个在 QDesigner 里面拖拽的时候的QScrollArea 就会自动生成一个 QWidget 类型的 scrollAreaWidgetContents, 我们只需要设置好 这个 scrollAreaWidgetContents 的 minimumSize 的其中一个或者所有属性就可以自动的出滚动区域了。和第3 点是一个道理。

你可能感兴趣的:(#,▶,Qt扫盲,QScrollArea,Qt滚动区域,QScrollArea理论,qt5)