首页| 论坛| 消息

标题:【提问】请问如何限制QLineEdit接受合法数据(内详)?谢谢!
作者:marship
日期:2006-02-20 00:52
内容:

我知道可以用 QValidator及其子类,通过QLineEdit的setValidator方法调用,现在我想限制QLineEdit中接受合法的输入,即要求:
不能以数字开头,中间不能包含标点等数据,可能开头的包含中文和英文字符
我在网上查了查,给的例子用26个字母开头来限制不能以数字开头,这个在这里不行,请大家帮忙,这个应该怎么写?谢谢!


#1 [zccmin 02-20 18:31]
这我做过。我是这样实现的:
写一个基于QLineEdit的派生类,在该类中重新定义一个事件函数 pressEvent(QEvent* e)
{
if(e->key()>=65&&e->key()
#2 [marship 02-21 21:07]
问题在于我不是仅仅输入英文,还有汉字,这里的处理应该是不一样的吧,如果一有键就处理,那汉字怎么进去啊?谢谢zccmin回复。
#3 [zccmin 02-22 19:27]
汉字的我也没处理过。上面的方法是一个键盘事件处理。
我觉得如果要是处理汉字的话,肯定不能用键盘事件处理了。
可以试着 直接判断 Qlineedit里的类容。不过我估计那样判断的话,不能过滤输入。
#4 [tieliu 02-24 19:49]
用键盘事件处理的方式不是很好,处理中文输入法有问题
我觉得还是使用Qt已经提供的QLineEdit和QValidator类之间的配合机制。
可以有两种方法:
(1)从QValidator类继承,重载其 validate()函数,在validate()函数中进行字符串分析判断
(2)直接使用QRegExpValidator类,使用正则表达式进行匹配,
不过我没有试过第二种方法能否正确处理中文字符串

回复 发表
主题 版块