我正在尝试创建一个聊天应用程序,所以我添加了QTextEdit小部件,其中用户键入内容,小部件的最大高度 30 像素,所以基本上一个行
self.msgtext = QtGui.QTextEdit(self)
self.msgtext.setObjectName('msgtext')
self.msgtext.setStyleSheet("#msgtext {background-color: black; color: yellow; font-size: 18pt; }")
self.msgtext.setMaximumSize(500, 30)
self.msgtextplain = self.msgtext.toPlainText()
我想在用户获得一个新行时增加小部件的最大高度,但我不知道是否有任何信号可以告诉我已经到达新行。
是否有任何信号可以计算QTextEdit中的行数?
答案 0 :(得分:2)
您可以使用blockCount()
但不要忘记调整您用于QTextEdit
的父母的任何内容。这是一个例子:
import sys
from PyQt5 import QtGui, QtWidgets, QtCore
class Window(QtWidgets.QWidget):
def __init__(self):
QtWidgets.QWidget.__init__(self)
self.msgtext = QtWidgets.QTextEdit(self)
self.msgtext.setObjectName('msgtext')
self.msgtext.setStyleSheet("#msgtext {background-color: black; color: yellow; font-size: 18pt; }")
self.msgtext.resize(500, 30)
self.msgtextplain = self.msgtext.toPlainText()
self.msgtext.textChanged.connect(self.changed)
def changed(self):
lines = self.msgtext.document().blockCount()
self.msgtext.resize(500, 30*lines)
self.resize(500, 30*lines)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())
PyQt5 。要在 PyQt4 中执行此操作,请将QtWidgets
的所有内容更改为QtGui
(并明确检查导入行;这应该足够,但要确定您是否有任何困难)。结果如下: