在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滚动区域详解》。