8

我在 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)
4

1 回答 1

10

我相信我已经解决了你的问题。

在您的代码中添加以下内容,它的行为应该正确:

    ...

    scrollArea.setWidget(scrollWidget)
    scrollArea.setWidgetResizable(True) #add this
    self.setCentralWidget(scrollArea)

    ...

文档中,

小部件可调整大小:布尔

此属性保存滚动区域是否应调整视图小部件的大小。

如果此属性设置为 true,则滚动区域将自动调整小部件的大小,以避免滚动条可以避免,或者利用额外的空间。

于 2010-02-22T05:45:12.553 回答