我有一个从QTextEdit继承的类,我想自动调整其高度以适合键入时的文本。我使用下面的代码来完成这一部分:
class GrowingTextEdit(QTextEdit):
def __init__(self, text):
super().__init__()
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.document().contentsChanged.connect(self.sizeChange)
self.setText(text)
self.setFixedHeight(50)
def sizeChange(self):
docHeight = self.document().size().height()
self.setFixedHeight(docHeight)
但是,我还希望能够在输入文本之前为其提供默认文本,并使其正确调整大小。但是,如果将下面的行放在__init__
中,则在创建文本框之前,这些文本框会出现在错误的位置,然后再添加到布局中。没有show(),我得到document()。size()返回0。
self.show()
self.sizeChange()