2

次のウィジェットを順番に並べたQDialog( ) があります: 、、、QVBoxLayoutQTextEditQLabel[layout stretch]QPushButton

QTextEdit問題は、 をと一緒に拡大したいのですがQDialog、スクロールバーが消えるまでだけです。その後、レイアウト ストレッチが拡大し始め、QLabelと の間のギャップが明らかになりQPushButtonます。

これについて賢明な方法は何でしょうか?
注: QDialog はサイズ変更可能で、QTextEdit はワード ラッピングがオンになっています。

編集:Qt4/PySideの場合、次のように動作するはずです

class TextEdit(qt.QTextEdit):
    def __init__(self, *args, **kwargs):
        qt.QTextEdit.__init__(self, *args, **kwargs)
        self.document().modificationChanged.connect(self.updateMaxHeight)

    def updateMaxHeight(self, *args):
        self.setMaximumHeight(self.document().size().height())

    def resizeEvent(self, e):
        qt.QTextEdit.resizeEvent(self, e)
        self.updateMaxHeight()

class MyDialog(qt.QDialog):
    def __init__(self, *args, **kwargs):
        qt.QDialog.__init__(self, *args, **kwargs)
        self.setLayout(qt.QVBoxLayout())
        self.textEdit = TextEdit('Example text')
        self.layout().addWidget(self.textEdit, 1) #1 for resizable
        self.layout().addWidget(qt.QLabel('Example label')
        self.layout().addStretch()
        self.layout().addWidget(qt.QPushButton('Example button')
4

1 に答える 1