我在QWidget中有一个QLabel和一个QLineEdit。当我在QScrollArea中有小部件时,行编辑不会扩展以占用窗口的多余宽度。当窗口小部件不在滚动区域内时,它会扩展。
我已尝试设置行编辑和窗口小部件的大小策略,以便水平扩展,但它不会占用多余的空间。我怀疑当在滚动区域内时,小部件的sizeHint()会被压缩。任何想法如何使这项工作?
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self, None)
self.setWindowTitle('Test Window')
self.resize(500, 250)
scrollArea = QtGui.QScrollArea()
scrollWidget = QtGui.QWidget()
scrollWidget.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Maximum)
layout = QtGui.QGridLayout(scrollWidget)
label = QtGui.QLabel("Name:")
layout.addWidget(label, 0, 0)
lineEdit = QtGui.QLineEdit("Value")
lineEdit.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Maximum)
layout.addWidget(lineEdit, 0, 1)
scrollWidget.setLayout(layout)
scrollArea.setWidget(scrollWidget)
self.setCentralWidget(scrollArea)
答案 0 :(得分:9)
我相信我已经解决了你的问题。
对您的代码添加以下内容,它应该正常运行:
...
scrollArea.setWidget(scrollWidget)
scrollArea.setWidgetResizable(True) #add this
self.setCentralWidget(scrollArea)
...
来自docs,
widgetResizable:bool
此属性保存滚动区域是否应调整视图窗口小部件的大小。
如果此属性设置为true,则滚动区域将自动调整窗口小部件的大小,以避免可以避开的滚动条,或者利用额外的空间。