Ros*_*oss 2 qt pyqt qscrollarea
我有一个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)
Run Code Online (Sandbox Code Playgroud)
但是,当查看布局不滚动时,它会将项目垂直拉伸(收缩?):

我尝试过使用最小高度,但这似乎不起作用 - 我能做什么才能使每个标签单独出现并导致滚动视图滚动?
创建一个单独的小部件作为标签的容器(下面作为"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_()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1946 次 |
| 最近记录: |