次のウィジェットを順番に並べたQDialog
( ) があります: 、、、QVBoxLayout
QTextEdit
QLabel
[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')