PyQt(Python+Qt)学习随笔:QScrollArea滚动区域的scrollAreaWidgetContents、widget及setWidget等相关概念解释
阅读原文时间:2023年07月08日阅读:2

在Designer中设计将一个lable放到滚动区域上,使用PyUIC生成代码后,可以看到除了QScrollArea、label 标签外,还多了个scrollAreaWidgetContents对象,并且label的父对象被设置为了这个scrollAreaWidgetContents对象,而滚动区域则调用scrollArea.setWidget(self.scrollAreaWidgetContents)与这个scrollAreaWidgetContents对象进行了关联。

例如常见的生成代码示例如下:

        #生成滚动区域
        self.scrollArea = QtWidgets.QScrollArea(mainWin)
        self.scrollArea.setGeometry(QtCore.QRect(9, 9, 261, 211))
        self.scrollArea.setObjectName("scrollArea")
        #生成滚动区域的内容部署层部件
        self.scrollAreaWidgetContents = QtWidgets.QWidget()
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 241, 207))
        self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
        #在内容部署层放置标签部件
        self.label = QtWidgets.QLabel(self.scrollAreaWidgetContents)
        self.label.setGeometry(QtCore.QRect(9, 110, 54, 16))
        self.label.setObjectName("label")
        #设置滚动区域的内容部署部件为前面生成的内容部署层部件
        self.scrollArea.setWidget(self.scrollAreaWidgetContents)

scrollAreaWidgetContents对象其实就是滚动区域上放置子部件的对象,子部件并不直接放置在QScrollArea对象上,而是放置在scrollAreaWidgetContents对象上,这个对象对应的界面范围老猿称其为内容部署层。

具体相关概念请参考《PyQt(Python+Qt)学习随笔:QScrollArea滚动区域详解》。