1 QScrollArea 简介
QScrollArea
类提供了另一个窗口小部件的滚动视图。scroll area 用于显示框架内子窗口小部件的内容。如果窗口小部件超出框架的大小,则视图可以提供滚动条,以便可以查看子窗口小部件的整个区域。子窗口小部件必须使用 setWidget()
指定。例如:
from xinet import QtWidgets, QtCore, QtGui
from xinet.run_qt import run
class ImageView(QtWidgets.QScrollArea):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# 载入图片
imageLabel = QtWidgets.QLabel(self)
image = QtGui.QPixmap("test.jpg")
imageLabel.setPixmap(image)
# 设定滚动条组件
self.setBackgroundRole(QtGui.QPalette.Dark)
self.setWidget(imageLabel)
# 初始化设定
self.init_Ui()
def init_Ui(self):
# 修改窗口默认尺寸
self.resize(500, 500)
if __name__ == '__main__':
run(ImageView)
显示:

上面的代码创建了一个包含图像标签的滚动区域。缩放图像时,滚动区域可以提供必要的滚动条。
滚动条的外观取决于当前设置的scroll bar policies。您可以使用QAbstractScrollArea
继承的功能来控制滚动条的外观。
例如,您可以设置horizontalScrollBarPolicy
和verticalScrollBarPolicy
属性。或者,如果您希望在滚动区域的内容发生变化时动态调整滚动条,则可以使用horizontalScrollBar()
和verticalScrollBar()
函数(使您能够访问滚动条),并在每次 使用setValue()
函数更改滚动区域的内容。
您可以使用widget()
函数检索子控件。可以使用setWidgetResizable()
函数将视图调整大小。 可以使用setAlignment()
指定窗口小部件的对齐方式。
有两个便捷函数ensureVisible()
和ensureWidgetVisible()
,通过确保在需要时滚动内容,可以确保确保内容的特定区域在视口中可见。
使用滚动区域显示自定义窗口小部件的内容时,重要的是确保将子窗口小部件的size hint
设置为合适的值。如果将标准QWidget
用于子窗口小部件,则可能有必要调用setMinimumSize()
以确保在滚动区域内正确显示窗口小部件的内容。
如果滚动区域用于显示包含布局中排列的子窗口小部件的窗口小部件的内容,则必须意识到布局的大小策略也将确定窗口小部件的大小,这一点很重要。 这对于了解是否打算动态更改布局的内容特别有用。 在这种情况下,将布局的size constraint
属性设置为一个对布局的最小和/或最大大小提供约束的属性(例如SetMinAndMaxSize
)将导致每当布局内容更改时,滚动区域的大小就会更新。
有关使用QScrollArea
类的完整示例,请参见 Image Viewer 示例。该示例显示了如何组合QLabel
和QScrollArea
来显示图像。
网友评论