class QScrollArea#

QScrollArea 类提供了一个滚动到其他小部件的视图。 更多

Inheritance diagram of PySide6.QtWidgets.QScrollArea

简述#

属性#

  • alignment - 滚动区域小部件的对齐方式

  • widgetResizable - 滚动区域是否应该调整视图小部件的大小

方法#

注:

本文档可能包含自动从C++转换为Python的短码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建票据的方式让我们知道。

详细描述#

警告:

本节包含自动从C++转换为Python的短码片段,可能包含错误。

滚动区域用于在框架内显示子部件的内容。如果部件的尺寸超过框架,视图可以提供滚动条,以便可以查看子部件的整个区域。必须使用setWidget()指定子部件。例如

imageLabel = QLabel()
image = QImage("happyguy.png")
imageLabel.setPixmap(QPixmap.fromImage(image))
scrollArea = QScrollArea()
scrollArea.setBackgroundRole(QPalette.Dark)
scrollArea.setWidget(imageLabel)

上面的代码创建了一个包含图像标签的滚动区域(如图下所示)。当调整图片大小的时候,滚动区域可以提供必要的滚动条

qscrollarea-noscrollbars1

qscrollarea-onescrollbar2

qscrollarea-twoscrollbars3

滚动条的外观取决于当前设置的滚动条策略。您可以通过继承自QAbstractScrollArea的功能来控制滚动条的外观。

例如,您可以设置horizontalScrollBarPolicyverticalScrollBarPolicy属性。或者如果您希望滚动条在滚动区域内容变化时动态调整,可以使用horizontalScrollBar()verticalScrollBar()函数(这些函数允许您访问滚动条)并在滚动区域的内容更改时使用setValue()函数设置滚动条的值。

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

两个便利函数 ensureVisible()ensureWidgetVisible() 可以确保窗口视图中某些内容区域可见,必要时通过滚动内容实现。

尺寸提示和布局#

在使 双指 框区 显示自定义小部件的内容时,重要的是要确保子小部件的 size hint 被设置为合适的值。如果用于子小部件的是标准 QWidget,则可能需要调用 setMinimumSize() 确保小部件的内容在滚 双 轴区内正确显示。

如果使用滚 双 轴区查看包含布局排列的子小部件的小部件的内容,重要的是要实现布局的大小策略也将决定小部件的大小。这对于您打算动态更改布局的内容时非常有用。在这种情况下,将布局的 size constraint 属性设置为提供对布局的最小和/或最大大小约束的属性(例如,SetMinAndMaxSize )将导致滚动区的大小在布局内容更改时更新。

注:

当使用 from __feature__ import true_property 时,可以直接使用属性,否则通过访问器函数使用。

属性 alignmentᅟ: Qt.AlignmentFlag 组合#

该属性包含滚 双 轴区内小部件的对齐方式。

有效的对齐方式是以下标志的组合

  • Qt::AlignLeft

  • Qt::AlignHCenter

  • Qt::AlignRight

  • Qt::AlignTop

  • Qt::AlignVCenter

  • Qt::AlignBottom

默认情况下,小部件将位于滚 双 轴区的左上角。

访问函数
属性 widgetResizable: bool#

此属性指示滚动区域是否应该调整视图小部件的大小。

如果此属性设置为false(默认值),则滚动区域将尊重其小部件的大小。不管此属性如何,您都可以使用widget() -> resize() 程序化调整小部件大小,滚动区域将自动调整到新大小。

如果此属性设置为true,则滚动区域将自动调整小部件大小,以避免出现滚动条,或利用额外空间。

访问函数
__init__([parent=None])#
参数:

parentQWidget

使用给定的parent构建一个空滚动区域。

另请参阅

setWidget()

alignment()#
返回类型:

组合了AlignmentFlag

另请参阅

setAlignment()

属性alignment的获取器。

ensureVisible(x, y[, xmargin=50[, ymargin=50]])#
参数:
  • x – int

  • y – int

  • xmargin – int

  • ymargin – int

滚动滚动区域的内容,以便点(xy)位于视口区域内,并具有由像素指定的内边距,内边距由xmarginymargin指定。如果不能达到指定的点,则会滚动到最近的可行位置。默认值两个边距都是50像素。

ensureWidgetVisible(childWidget[, xmargin=50[, ymargin=50]])#
参数:
  • childWidgetQWidget

  • xmargin – int

  • ymargin – int

滚动滚动区域的全部内容,以便在视口中可见 childWidget,并通过 xmarginymargin 指定的像素值设置边距。如果指定点无法到达,内容将滚动到最近的合法位置。两个边距的默认值都是 50 像素。

setAlignment(arg__1)#
参数:

arg__1AlignmentFlag 的组合

另请参阅

alignment()

属性 alignmentᅟ 的设置器。

setWidget(widget)#
参数:

widgetQWidget

设置滚动区域的 widget

widget 成为滚动区域的子元素,当滚动区域被删除或设置新元素时将被销毁。

元素的 autoFillBackground 属性将被设置为 true

如果在添加 widget 时滚动区域是可见的,你必须显式调用 show()

注意:您必须在调用此函数之前添加 widget 的布局;如果稍后添加,则 widget 将不可见 - 不论何时调用滚动区域,也无论何时尝试调用 show()。在这种情况下,您也只能稍后 show() widget

另请参阅

widget()

setWidgetResizable(resizable)#
参数:

resizable – bool

另请参阅

widgetResizable()

属性 widgetResizableᅟ 的设置器。

takeWidget()#
返回类型:

QWidget

移除滚动区域的 widget,并将 widget 的所有权传递给调用者。

另请参阅

widget()

widget()#
返回类型:

QWidget

返回滚动区域的组件,如果没有则返回 None

另请参阅

setWidget()

widgetResizable()#
返回类型:

bool

另请参阅

setWidgetResizable()

属性 widgetResizableᅟ 的获取器。