Python pyqt4 QTextEdit-如何设置MaxLength?

Python pyqt4 QTextEdit-如何设置MaxLength?,python,pyqt,pyqt4,Python,Pyqt,Pyqt4,我有一个多行QTextEdit,它绑定到数据库VARCHAR(2048)字段 我想将用户输入长度限制为最多2048个字符 QTextEdit没有像QLineEdit那样的setMaxLength(int)方法 有人有什么建议吗 self.editBox = QTextEdit() 谢谢我在Qt Wiki上找到: 没有直接的API来设置/获取QTextEdit的最大长度,但是您可以通过将插槽连接到信号,然后调用来确定它有多大来自行处理。如果已达到限制,则可以重新实现,而不必对普通字符执行任何操作

我有一个多行QTextEdit,它绑定到数据库VARCHAR(2048)字段

我想将用户输入长度限制为最多2048个字符

QTextEdit没有像QLineEdit那样的setMaxLength(int)方法

有人有什么建议吗

self.editBox = QTextEdit()
谢谢

我在Qt Wiki上找到:

没有直接的API来设置/获取QTextEdit的最大长度,但是您可以通过将插槽连接到信号,然后调用来确定它有多大来自行处理。如果已达到限制,则可以重新实现,而不必对普通字符执行任何操作

您可能还对附加了一些代码的项目感兴趣(希望它对您有用):

#包括
#包括
#包括“TextEdit.hpp”
TextEdit::TextEdit():QPlainTextEdit(){
连接(此,信号(textChanged()),此,插槽(myTextChanged());
}
TextEdit::TextEdit(int-maxChar):QPlainTextEdit(){
这->maxChar=maxChar;
连接(此,信号(textChanged()),此,插槽(myTextChanged());
}
int TextEdit::getMaxChar(){
返回maxChar;
}
void TextEdit::setMaxChar(int-maxChar){
这->maxChar=maxChar;
}
void TextEdit::myTextChanged(){
如果(QPlainTextEdit::toPlainText().length()>maxChar){
QPlainTextEdit::setPlainText(QPlainTextEdit::toPlainText().left(QPlainTextEdit::toPlainText().length()-1));
QPlainTextEdit::moveCursor(QTextCursor::End);
QMessageBox::信息(NULL,QString::fromUtf8(“警告”),
QString::fromUtf8(“警告:不再”)+QString::number(maxChar)+QString::fromUtf8(“此字段中的字符”),
QString::fromUtf8(“Ok”);
}
}
使用插槽“textChanged()”:

另一种可能性是,当达到最大长度或按下不需要输入的其他键时,从“QPlainTextEdit”派生并重新实现“keyPress”事件过滤键

#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"));
}
}
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)