我有一个 QVBoxLayout,它有一个 QSCrollArea 并在其末尾添加了 addStretch()。
此处的 QScrollArea 仅使用一半可用空间,尽管下方有可用空间,当前由 addStretch 占用。
如果 QScrollArea 的内容足够大,我希望 QScrollArea 扩展到所有可用空间。当 QScrollArea 的内容较小时,我希望 QScrollArea 缩小到那个大小,其余的可用空间由 addStetch 使用。
但是,目前,对于小的 QScrollArea 这有效,但是当 QScrollArea 的内容较大时,它只会扩展到可用空间的一半。
我尝试为 QScrollArea 和底层滚动小部件设置各种大小策略,但没有任何效果。
得到这个排序的诀窍是什么?
这是我的代码片段[在 Python 中,但非常欢迎使用 C++ 中的答案]:
# My setup
self.layout = QVBoxLayout()
self.setLayout(self.layout)
scrollArea = QScrollArea()
self.layout.addWidget(scrollArea)
scrollArea.setWidgetResizable(True)
scrollArea.setEnabled(True)
self.scrollWidget = QWidget()
self.scrollLayout = QVBoxLayout()
self.scrollWidget.setLayout(self.scrollLayout)
scrollArea.setWidget(self.scrollWidget)
# Now what I do is, I add bunch of widgets inside the self.scrollLayout
# and in the end, I perform a self.layout.addStretch() to push them up (verticle Alignment does same)
# Maximum height QScrollArea (scrollArea) gets is stuck at around 50% although I want to take all the space if necessary
我添加了所有可能的 setSizePolicy(..) 选项
scrollArea.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding))
# and ALL others. None works. addStretch() still takes 50% minimum space and gets even more if QScrollArea's contents are smaller.