2016-06-14 78 views
0

我試圖做一個聊天應用程序,所以我增加了的QTextEdit控件,其中用戶鍵入的內容,控件的最大高度爲像素,所以基本上一個線。PyQt的:獲取線的量的QTextEdit

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的行數?

回答

1

您可以使用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改變一切是QtWidgetsQtGui(並檢查導入線明顯;這應該是足夠的,但確實告訴你是否有任何困難)。下面是結果:

Dynamically resizing a QLineEdit

+0

感謝很多的真棒,詳細的解答!工作沒有任何問題! – ShellRox