2016-06-14 8 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() 

私は、ウィジェットたび、ユーザーの取得の1つの新ラインの最大の高さを増やしたいが、私は新しい行に達したことを伝えることができる任意の信号があるかどうかはわかりません。

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です。これを行うにはPyQt4QtWidgetsQtGuiのすべてを変更してください(そして、インポート行を明らかに確認してください;これで十分ですが、問題があるかどうかは分かります)。ここでの結果である:

Dynamically resizing a QLineEdit

+0

がたくさん素晴らしいと詳細な回答をありがとう!、何の問題もなく働いていました! – ShellRox

関連する問題