gpt4 book ai didi

qt - QBoxLayout 在调整其包含 ScrollArea 的大小时拉伸(stretch)其小部件,而不是滚动

转载 作者:行者123 更新时间:2023-12-01 01:36:42 25 4
gpt4 key购买 nike

我有一个 ScrollArea,其中包含一个包含多个标签的 VBoxLayout:

realmScroll = QScrollArea(self.container.widget())
realmScroll.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
realmScroll.setWidgetResizable(True) # setting this to False has no effect

self.realmLayout = QVBoxLayout(realmScroll)
realmScroll.setWidget(self.realmLayout.widget())
self.container.addWidget(realmScroll)

for i in range(1, 20):
label = QLabel("test #" + str(i))
label.setMinimumHeight(20)
self.realmLayout.addWidget(label)

但是,当查看布局不滚动时,它会垂直拉伸(stretch)(收缩?)项目:

QLabels all bunched up on each other

我尝试过使用最小高度,但这似乎不起作用 - 我该怎么做才能使每个标签单独出现并导致 ScrollView 滚动?

最佳答案

创建一个单独的小部件作为标签的容器(以下称为“labelsContainer”)并将其设置为滚动区域的小部件。为容器小部件制作一个垂直框布局(以下称为“labelsLayout”)并将标签添加到该布局。

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class Test(QMainWindow):

def __init__(self):
QMainWindow.__init__(self)
self.realmScroll = QScrollArea(self)
self.setCentralWidget(self.realmScroll)
self.realmScroll.setWidgetResizable(True)

labelsContainer = QWidget()
self.realmScroll.setWidget(labelsContainer)
labelsLayout = QVBoxLayout(labelsContainer)

for i in range(1, 20):
label = QLabel("test #" + str(i))
labelsLayout.addWidget(label)

app = QApplication(sys.argv)
test = Test()
test.show()
app.exec_()

关于qt - QBoxLayout 在调整其包含 ScrollArea 的大小时拉伸(stretch)其小部件,而不是滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6566305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com