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.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设置最大可输入字符相关推荐
- android设置输入框输入字符限制,Android里限制EditText控件可以输入字符内容的范围的方法...
介绍 介绍 福哥在制作APP的时候,需要限制文本输入框可以输入的内容.经过一顿研究,发现了digits这个属性.使用digits属性可以限制输入框接受的字符类型和范围,范围之内的可以被输入,范围之外的 ...
- android设置输入框输入字符限制,Android EditText限制输入字符的方法总结
Android EditText限制输入字符的方法总结 最近项目要求限制密码输入的字符类型, 例如不能输入中文. 现在总结一下EditText的各种实现方式, 以比较各种方法的优劣. 第一种方式 ...
- android 代码设置EditText的hint字符
今天,简单讲讲android里如何在代码里设置 EditText的hint字符. 之前,我一般是直接在xml文件设置EditText 的hint字符,后来需要在代码里修改hint字符,发现自己居 ...
- 【转】android 中如何限制 EditText 最大输入字符数
原文网址:http://blog.csdn.net/fulinwsuafcie/article/details/7437768 方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:andr ...
- java 实现打印条形码_条码打印软件中如何设置条形码下面的字符间距?
条形码有两部分组成,上面是黑白条图案,用于扫描设备的识别,下面是条形码数据,方便在没有扫描设备的情况下可以手动去搜索相关的信息.一般用条码打印软件制作条形码,下面的条形码数据间距是自动生成的,而在条码 ...
- 用getchar和%C输入字符型数据
用getchar和%C输入字符型数据 标签(空格分隔): C 双学位高级语言程序设计 C输入输出 getchar函数的输入模式,是以回车键为结束标志,将回车之前的所有数据都放入缓冲区中,每进行一次赋值 ...
- android edittext最多输入,android 中如何限制 EditText 最大输入字符数
方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:android:maxLength="10" 即限制最大输入字符个数为10 方法二: 在代码中使用InputFilt ...
- 搜索计算机无法输入法,Windows10左下角搜索框无法输入字符的两种解决方法
用户在使用win10系统过程中,经常会使用到其自带的搜索功能.不过,近来有些用户却发现电脑左下角的搜索框突然无法输入字符.那这该怎么办呢?我们最常用的方法是重启电脑,让win10的搜索服务重新运行.下 ...
- Android EditText控制输入字符限制的方法
EditText控制输入字符限制的方法 1 EditText的inputType属性 inputType属性用于设置EditText的输入类型,如number,只能输入数字,软键盘为数字键盘 1.1 ...
最新文章
- 无BOM禁止转生产订单
- java--杨辉三角
- 怎么损坏mysql_如何修复MySQL中损坏的表
- java 没有提示信息,ActionErrors没有提示信息
- Atitit.pdf 预览 转换html attilax总结
- oracle 触发器代码,Oracle触发器实例代码
- 极智开发 | UmiJS 快速上手
- 【Windows】安装openslide遇到的问题及解决办法
- 运营商线路细分_电信运营商如何进行客户细分
- 夜宿祝国寺(文:元哲)
- Multisim仿真—恒流源电路(一)
- 西门子官网下载Eplan部件库
- 驱动加载错误:insmod: error inserting 'hello.ko': -1 Device or resource busy
- unity3d实现简单的打飞碟游戏
- Maven 的 Maven Compiler Plugin 插件
- 程序员的修仙之路-筑基篇
- jupyter的环境问题:在jupyter中添加我们想要的环境
- 感觉这么多年喝的鸡汤都白补了,我想静静!
- 意外的惊喜:f.lux, 一款真的很强大的护眼软件
- 电脑监控专家-专业的电脑监控软件
热门文章
- python读取文件乱码
- C#图解教程读书笔记(第3章 类型、存储及变量)
- Delta-wave
- Linux内核升级Broadcom网卡问题(bnx2)
- ie6、ie7下overflow失效
- JAVA设计模式-装饰器模式(Decorator)
- 软件测试工程师面试必备技能
- gzp解压命令 linux_Linux-压缩解压命令(gzip,zip,tar,bzip)
- 函数传参数_算法笔记(7)第二章C、C++快速入门函数,main函数,
- java mysql 二级缓存_深入理解MyBatis中的一级缓存与二级缓存