2011-12-12 59 views
3

データベースのVARCHAR(2048)フィールドに関連付けられた複数行のQTextEditがあります。pyqt4 QTextEdit - どのようにMaxLengthを設定するのですか?

は私がにQLineEditが行うようsetMaxLength(int)メソッドを持っていません2048の文字

QTextEditの最大のユーザーエントリの長さを制限したいです。

誰もが何か提案がありますか?私はQtのWikiのthis FAQを見つけ

self.editBox = QTextEdit() 

おかげ

答えて

3

ありQTextEditの最大の長さを取得/設定するには直接のAPIはありませんが、あなたが接続して、この自分自身を扱うことができますスロットをcontentsChanged()信号に送信してから、toPlainText().length()に電話してどれくらい大きいかを調べます。上限に達している場合は、keyPressEvent()keyReleaseEvent()を再実装して、通常の文字に対して何もしないでください。付属のいくつかのコードを持っている

ます。またthis postに興味がある可能性がありは(うまくいけば、それはあなたのために働く):

txtInput = QPlainTextEdit() 

QObject.connect(txtInput, SIGNAL("textChanged()"), txtInputChanged) 

def txtInputChanged(): 
    if txtInput.toPlainText().length() > maxInputLen: 
     text = txtInput.toPlainText() 
     text = text[:maxInputLen] 
     txtInput.setPlainText(text) 

     cursor = txtInput.textCursor() 
    cursor.setPosition(maxInputLen) 
    txtInput.setTextCursor(cursor) 

別:

#include <QtCore> 
#include <QtGui> 
#include "TextEdit.hpp" 

TextEdit::TextEdit() : QPlainTextEdit() { 
connect(this, SIGNAL(textChanged()), this, SLOT(myTextChanged())); 
} 

TextEdit::TextEdit(int maxChar) : QPlainTextEdit() { 
this->maxChar = maxChar; 
connect(this, SIGNAL(textChanged()), this, SLOT(myTextChanged())); 
} 

int TextEdit::getMaxChar() { 
return maxChar; 
} 

void TextEdit::setMaxChar(int maxChar) { 
this->maxChar = maxChar; 
} 

void TextEdit::myTextChanged() { 
if (QPlainTextEdit::toPlainText().length()>maxChar) { 
QPlainTextEdit::setPlainText(QPlainTextEdit::toPlainText().left(QPlainTextEdit::toPlainText().length()-1)); 
QPlainTextEdit::moveCursor(QTextCursor::End); 
QMessageBox::information(NULL, QString::fromUtf8("Warning"), 
QString::fromUtf8("Warning: no more then ") + QString::number(maxChar) + QString::fromUtf8(" characters in this field"), 
QString::fromUtf8("Ok")); 
} 
} 
0

がスロット "textChangedを()" の使用します最大長に達したとき、または入力が望ましくない他のキーが押されたときに、「QPlainTextEdit」から派生し、「keyPress」イベントフィルタリングキーを再実装することが可能です。

http://doc.qt.io/qt-5/qplaintextedit.html#keyPressEvent

関連する問題