Pyside:QScrollArea 调整小部件
Pyside: QScrollArea Resizing widgets
我在使用 QScrollArea 时遇到问题,它调整了我的小部件的大小。我希望滚动区域内的所有布局和小部件都具有固定高度。如果我设置 scroll.setWidgetResizable(True) 它将根据生成的小部件数量调整所有内容的大小。如果我将它设置为 False,那么我的小部件将不会出现。这是我的代码示例
container = QtWidgets.QWidget()
list_layout = QtWidgets.QVBoxLayout()
container.setLayout(list_layout)
scroll = QtWidgets.QScrollArea()
scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
scroll.setWidgetResizable(True)
scroll.setWidget(container)
for x in range 10:
product_container = QtWidgets.QFrame()
product_container .setFixedHeight(50)
row = QtWidgets.QHBoxLayout(product_container)
name = QtWidgets.QLabel(y)
cbox = QtWidgets.QCheckBox()
row.addWidget(name)
row.addWidget(cbox)
seperator = QtWidgets.QFrame()
separator.setFrameStyle(QtWidgets.QFrame.HLine | QtWidgets.QFrame.Plain)
list_layout.addWidget(product_container)
list_layout.addWidget(separator)
我尝试将我为水平布局生成的容器设置为具有固定大小(这确实有效 - 如果我设置背景颜色,它会显示我的小部件周围的框较小)但是 space水平布局和QFrame线之间仍然是随机的。
我的最终目标是在水平布局和分隔符之间保持固定距离
如果行的高度是固定的,您需要做的就是在容器布局的末尾添加一个可扩展的 space,这样行就会全部向上推:
container = QtWidgets.QWidget()
list_layout = QtWidgets.QVBoxLayout()
container.setLayout(list_layout)
...
for x in range(10):
...
list_layout.addWidget(separator)
list_layout.addStretch()
我在使用 QScrollArea 时遇到问题,它调整了我的小部件的大小。我希望滚动区域内的所有布局和小部件都具有固定高度。如果我设置 scroll.setWidgetResizable(True) 它将根据生成的小部件数量调整所有内容的大小。如果我将它设置为 False,那么我的小部件将不会出现。这是我的代码示例
container = QtWidgets.QWidget()
list_layout = QtWidgets.QVBoxLayout()
container.setLayout(list_layout)
scroll = QtWidgets.QScrollArea()
scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
scroll.setWidgetResizable(True)
scroll.setWidget(container)
for x in range 10:
product_container = QtWidgets.QFrame()
product_container .setFixedHeight(50)
row = QtWidgets.QHBoxLayout(product_container)
name = QtWidgets.QLabel(y)
cbox = QtWidgets.QCheckBox()
row.addWidget(name)
row.addWidget(cbox)
seperator = QtWidgets.QFrame()
separator.setFrameStyle(QtWidgets.QFrame.HLine | QtWidgets.QFrame.Plain)
list_layout.addWidget(product_container)
list_layout.addWidget(separator)
我尝试将我为水平布局生成的容器设置为具有固定大小(这确实有效 - 如果我设置背景颜色,它会显示我的小部件周围的框较小)但是 space水平布局和QFrame线之间仍然是随机的。
我的最终目标是在水平布局和分隔符之间保持固定距离
如果行的高度是固定的,您需要做的就是在容器布局的末尾添加一个可扩展的 space,这样行就会全部向上推:
container = QtWidgets.QWidget()
list_layout = QtWidgets.QVBoxLayout()
container.setLayout(list_layout)
...
for x in range(10):
...
list_layout.addWidget(separator)
list_layout.addStretch()