PySide6.QtWidgets.QScrollArea

class QScrollArea

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

PySide6.QtWidgets.QScrollArea 的继承图

概要

属性

方法

注意

本文档可能包含从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-twoscrollbars3

qscrollarea-twoscrollbars3

qscrollarea-twoscrollbars3

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

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

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

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

大小提示和布局

当使用滚动区域显示自定义小部件的内容时,确保子小部件的size hint设置为适当的值非常重要。如果子小部件使用标准的QWidget,可能需要调用setMinimumSize()以确保小部件的内容在滚动区域内正确显示。

如果使用滚动区域来显示包含在布局中排列的子小部件的小部件内容,重要的是要意识到布局的大小策略也将决定小部件的大小。如果您打算动态更改布局的内容,这一点尤其有用。在这种情况下,将布局的size constraint属性设置为对布局的最小和/或最大大小提供约束的属性(例如,SetMinAndMaxSize)将导致每当布局内容更改时滚动区域的大小也会更新。

注意

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

property alignmentᅟ: Combination of Qt.AlignmentFlag

此属性保存滚动区域小部件的对齐方式。

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

  • Qt::AlignLeft

  • Qt::AlignHCenter

  • Qt::AlignRight

  • Qt::AlignTop

  • Qt::AlignVCenter

  • Qt::AlignBottom

默认情况下,小部件会固定在滚动区域的左上角。

Access functions:
property widgetResizableᅟ: bool

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

如果此属性设置为false(默认值),滚动区域将尊重其小部件的大小。无论此属性如何,您都可以使用widget() -> resize()以编程方式调整小部件的大小,滚动区域将自动调整自身以适应新的大小。

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

Access functions:
__init__([parent=None])
Parameters:

父级QWidget

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

另请参阅

setWidget()

alignment()
Return type:

AlignmentFlag 的组合

另请参阅

setAlignment()

属性 alignmentᅟ 的获取器。

ensureVisible(x, y[, xmargin=50[, ymargin=50]])
Parameters:
  • x – 整数

  • y – 整数

  • xmargin – int

  • ymargin – int

滚动滚动区域的内容,使得点 (x, y) 在视口区域内可见,边距由 xmarginymargin 以像素为单位指定。如果无法到达指定的点,内容将滚动到最近的有效位置。两个边距的默认值均为50像素。

ensureWidgetVisible(childWidget[, xmargin=50[, ymargin=50]])
Parameters:
  • childWidgetQWidget

  • xmargin – int

  • ymargin – int

滚动滚动区域的内容,使得widget()childWidget在视口中可见,边距由xmarginymargin以像素为单位指定。如果无法到达指定点,内容将滚动到最近的有效位置。两个边距的默认值均为50像素。

setAlignment(arg__1)
Parameters:

arg__1AlignmentFlag 的组合

另请参阅

alignment()

属性 alignmentᅟ 的设置器。

setWidget(widget)
Parameters:

widgetQWidget

设置滚动区域的widget

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

小部件的 autoFillBackground 属性将被设置为 true

如果滚动区域在添加widget时可见,您必须显式地show()它。

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

另请参阅

widget()

setWidgetResizable(resizable)
Parameters:

可调整大小 – 布尔值

另请参阅

widgetResizable()

属性 widgetResizableᅟ 的设置器。

takeWidget()
Return type:

QWidget

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

另请参阅

widget()

widget()
Return type:

QWidget

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

另请参阅

setWidget()

widgetResizable()
Return type:

布尔

另请参阅

setWidgetResizable()

属性 widgetResizableᅟ 的获取器。