• 10465阅读
  • 4回复

【提问】请问如何限制QLineEdit接受合法数据(内详)?谢谢! [复制链接]

上一主题 下一主题
离线marship
 
只看楼主 倒序阅读 楼主  发表于: 2006-02-20
我知道可以用 QValidator及其子类,通过QLineEdit的setValidator方法调用,现在我想限制QLineEdit中接受合法的输入,即要求:
不能以数字开头,中间不能包含标点等数据,可能开头的包含中文和英文字符
我在网上查了查,给的例子用26个字母开头来限制不能以数字开头,这个在这里不行,请大家帮忙,这个应该怎么写?谢谢!
[ 此贴被XChinux在2006-02-19 17:14重新编辑 ]
离线zccmin
只看该作者 1楼 发表于: 2006-02-20
这我做过。我是这样实现的:
写一个基于QLineEdit的派生类,在该类中重新定义一个事件函数 pressEvent(QEvent* e)
{
if(e->key()>=65&&e->key()<=90)// 你需要过虑的键码(这是是过滤大写字母)
{
///// 你需要的提示
}
els
{
QMultiLineEdit::keyPressEvent(e);
}
}
离线marship
只看该作者 2楼 发表于: 2006-02-21
问题在于我不是仅仅输入英文,还有汉字,这里的处理应该是不一样的吧,如果一有键就处理,那汉字怎么进去啊?谢谢zccmin回复。
离线zccmin
只看该作者 3楼 发表于: 2006-02-22
汉字的我也没处理过。上面的方法是一个键盘事件处理。
我觉得如果要是处理汉字的话,肯定不能用键盘事件处理了。
可以试着 直接判断 Qlineedit里的类容。不过我估计那样判断的话,不能过滤输入。
离线tieliu

只看该作者 4楼 发表于: 2006-02-24
用键盘事件处理的方式不是很好,处理中文输入法有问题
我觉得还是使用Qt已经提供的QLineEdit和QValidator类之间的配合机制。
可以有两种方法:
(1)从QValidator类继承,重载其 validate()函数,在validate()函数中进行字符串分析判断
(2)直接使用QRegExpValidator类,使用正则表达式进行匹配,

不过我没有试过第二种方法能否正确处理中文字符串
快速回复
限100 字节
 
上一个 下一个