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)

    ...

ドキュメントから、

widgetResizable : ブール値

このプロパティは、スクロール領域がビュー ウィジェットのサイズを変更する必要があるかどうかを保持します。

このプロパティが true に設定されている場合、スクロール領域はウィジェットのサイズを自動的に変更して、回避できるスクロール バーを回避するか、余分なスペースを利用します。

于 2010-02-22T05:45:12.553 に答える