QTextEdit设置最大可输入字符
?
QTextEdit是没有可以直接调用的成员函数用来设置可输入字节数的最大限制。
?
这边是通过信号textChanged来实时监控输入,从而控制输入的。
?
实现方式如下:
?
1。定义自己的处理槽slotTextChanged()
?
2。connect槽slotTextChanged和信号editChanged。
?
3。实现slotTextChanged如下:
?
? ? QString textContent = this->toPlainText();
? ? int length = textContent.count();
? ? int maxLength = maxLen; // 最大字符数
? ? if(length > maxLength)
? ? {
? ? ? ? int position = this->textCursor().position();
? ? ? ? QTextCursor textCursor = this->textCursor();
? ? ? ? textContent.remove(position - (length - maxLength), length - maxLength);
? ? ? ? this->setText(textContent);
? ? ? ? textCursor.setPosition(position - (length - maxLength));
? ? ? ? this->setTextCursor(textCursor);
? ? }
?
尝试运行输入,我限制了最大10字节,确实只能输入10个字节。
?
?
?
源码:
?
?
//edit_message.h // 编辑留言区域 class MsgTextEdit : public QTextEdit { Q_OBJECT public: MsgTextEdit(QWidget *parent = 0); ~MsgTextEdit(); void setMaxLength(int maxLength); int getMaxLength(); private slots: void textChanged(); // 点击编辑发送留言内容界面 signals: void msg_clicked(int &globalY, int &defaultTextType); protected: void mousePressEvent(QMouseEvent *); void mouseMoveEvent(QMouseEvent *e); private: int maxLength; // 最大输入字符数 };?
?