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.cpp
MsgTextEdit::MsgTextEdit(QWidget *parent) : QTextEdit(parent) {
#ifdef im_support  connect(this, SIGNAL(msg_clicked(int &, int &)), keyBoard, SLOT(cinputline_im_clicked(int &, int &)));
#endif  connect(this, SIGNAL(textChanged()), this, SLOT(textChanged()));
}
MsgTextEdit::~MsgTextEdit() {
}
void MsgTextEdit::textChanged() {  QString textContent = this->toPlainText();  int length = textContent.count();  int maxLength = this->getMaxLength(); // 最大字符数  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);  }
}
void MsgTextEdit::setMaxLength(int maxLength) {  this->maxLength = maxLength;
}
int MsgTextEdit::getMaxLength() {  return this->maxLength;
}
void MsgTextEdit::mousePressEvent(QMouseEvent *event) {  QTextEdit::mousePressEvent(event);  // 第一个参数表表示坐标Y轴坐标,0 表示软键盘始终显示在最下方  // 第二个参数表示默认显示软键盘类型,0表示字母  int globalY = 0;  int defaultTextType = 0;  emit msg_clicked(globalY, defaultTextType);
}
// 不允许鼠标选中一段文本进行拖拽等等鼠标移动相关的事件
void MsgTextEdit::mouseMoveEvent(QMouseEvent *) {
}  
//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; // 最大输入字符数
};  

QTextEdit设置最大可输入字符相关推荐

  1. android设置输入框输入字符限制,Android里限制EditText控件可以输入字符内容的范围的方法...

    介绍 介绍 福哥在制作APP的时候,需要限制文本输入框可以输入的内容.经过一顿研究,发现了digits这个属性.使用digits属性可以限制输入框接受的字符类型和范围,范围之内的可以被输入,范围之外的 ...

  2. android设置输入框输入字符限制,Android EditText限制输入字符的方法总结

    Android EditText限制输入字符的方法总结 最近项目要求限制密码输入的字符类型, 例如不能输入中文.   现在总结一下EditText的各种实现方式,  以比较各种方法的优劣. 第一种方式 ...

  3. android 代码设置EditText的hint字符

    今天,简单讲讲android里如何在代码里设置  EditText的hint字符. 之前,我一般是直接在xml文件设置EditText 的hint字符,后来需要在代码里修改hint字符,发现自己居 ...

  4. 【转】android 中如何限制 EditText 最大输入字符数

    原文网址:http://blog.csdn.net/fulinwsuafcie/article/details/7437768 方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:andr ...

  5. java 实现打印条形码_条码打印软件中如何设置条形码下面的字符间距?

    条形码有两部分组成,上面是黑白条图案,用于扫描设备的识别,下面是条形码数据,方便在没有扫描设备的情况下可以手动去搜索相关的信息.一般用条码打印软件制作条形码,下面的条形码数据间距是自动生成的,而在条码 ...

  6. 用getchar和%C输入字符型数据

    用getchar和%C输入字符型数据 标签(空格分隔): C 双学位高级语言程序设计 C输入输出 getchar函数的输入模式,是以回车键为结束标志,将回车之前的所有数据都放入缓冲区中,每进行一次赋值 ...

  7. android edittext最多输入,android 中如何限制 EditText 最大输入字符数

    方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:android:maxLength="10" 即限制最大输入字符个数为10 方法二: 在代码中使用InputFilt ...

  8. 搜索计算机无法输入法,Windows10左下角搜索框无法输入字符的两种解决方法

    用户在使用win10系统过程中,经常会使用到其自带的搜索功能.不过,近来有些用户却发现电脑左下角的搜索框突然无法输入字符.那这该怎么办呢?我们最常用的方法是重启电脑,让win10的搜索服务重新运行.下 ...

  9. Android EditText控制输入字符限制的方法

    EditText控制输入字符限制的方法 1 EditText的inputType属性 inputType属性用于设置EditText的输入类型,如number,只能输入数字,软键盘为数字键盘 1.1 ...

最新文章

  1. 无BOM禁止转生产订单
  2. java--杨辉三角
  3. 怎么损坏mysql_如何修复MySQL中损坏的表
  4. java 没有提示信息,ActionErrors没有提示信息
  5. Atitit.pdf 预览 转换html attilax总结
  6. oracle 触发器代码,Oracle触发器实例代码
  7. 极智开发 | UmiJS 快速上手
  8. 【Windows】安装openslide遇到的问题及解决办法
  9. 运营商线路细分_电信运营商如何进行客户细分
  10. 夜宿祝国寺(文:元哲)
  11. Multisim仿真—恒流源电路(一)
  12. 西门子官网下载Eplan部件库
  13. 驱动加载错误:insmod: error inserting 'hello.ko': -1 Device or resource busy
  14. unity3d实现简单的打飞碟游戏
  15. Maven 的 Maven Compiler Plugin 插件
  16. 程序员的修仙之路-筑基篇
  17. jupyter的环境问题:在jupyter中添加我们想要的环境
  18. 感觉这么多年喝的鸡汤都白补了,我想静静!
  19. 意外的惊喜:f.lux, 一款真的很强大的护眼软件
  20. 电脑监控专家-专业的电脑监控软件

热门文章

  1. python读取文件乱码
  2. C#图解教程读书笔记(第3章 类型、存储及变量)
  3. Delta-wave
  4. Linux内核升级Broadcom网卡问题(bnx2)
  5. ie6、ie7下overflow失效
  6. JAVA设计模式-装饰器模式(Decorator)
  7. 软件测试工程师面试必备技能
  8. gzp解压命令 linux_Linux-压缩解压命令(gzip,zip,tar,bzip)
  9. 函数传参数_算法笔记(7)第二章C、C++快速入门函数,main函数,
  10. java mysql 二级缓存_深入理解MyBatis中的一级缓存与二级缓存