• 10539阅读
  • 5回复

QLineEdit  setText()出错!!!!! [复制链接]

上一主题 下一主题
离线rockyluo
 

只看楼主 倒序阅读 楼主  发表于: 2009-02-22
感觉极其简单的一个函数QLineEdit::setText()
查了一天,始终不知道问题出在哪儿.....

我现在是有个QLineEdit,  当这个QLineEdit失去焦点的时候我连接了一个槽函数,假如为line_Slot()
这个槽函数作用是“补全功能”
因为我的QLineEdit输入的是浮点型数据
假如为  3.6  , 而我要求精确到小数位后两位,因此在丢失焦点的时候根据精确度调用setText(),将该QLineEdit设置为3.60。  这个已经实现。
关键是我考虑到以下一个情况,假如用户输入数为  “.6”(没有整数位),这样当我丢失焦点时setText的结果却为“0.”  ,  我不知道这种情况到底是什么原因产生的?
有没有人碰到,如何解释?
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线nmiirq

只看该作者 1楼 发表于: 2009-02-22
用qt4简单模拟了一下,不知道你是怎么写的,可以参考一下!
附件: TestLineEdit.rar (1186 K) 下载次数:79
只看该作者 2楼 发表于: 2009-02-22
Re:QLineEdit  setText()出错!!!!!
你补全函数贴出来……8成是补全函数的问题
离线rockyluo

只看该作者 3楼 发表于: 2009-02-22
s = line->text();                                          //    s = ".6"
float temp=s.toFloat(&ok);
printf("temp = %f\n",temp);                      //    temp = 0.600000
s = s.setNum( temp,'f',precision );        //    这里precision为精确度,初始化为1
printf("s = %s\n" , s.latin1() );                  //    这里s输出为“0.6”
line->setText( s );                                      //    调用setText后, line上显示成“0.”
以上是补全函数
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线rockyluo

只看该作者 4楼 发表于: 2009-02-22
引用第1楼nmiirq于2009-02-22 17:57发表的  :
用qt4简单模拟了一下,不知道你是怎么写的,可以参考一下!

nmiirq,谢谢你代码,可惜我这边库是qt2.3.7的
去改你qt4的代码比较困难
我自己也曾经单独就这个QLineEdit 写了个例子,编译运行都没问题,输入“.6”丢失焦点时也能正常补全为0.6。但就是在我的项目中出现了如上所述问题。我项目中lineedit是自己写的一个类,继承自QLineEdit,我想这可能与这个有关。

另外,关于输入“.6”补全问题我间接的解决了
因为连接textchanged信号,这样就在对应槽中先做个判断:
如果当前lineedit的值为“.”,则马上执行“ 在 '.'  前补 '0' ”动作!
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线nmiirq

只看该作者 5楼 发表于: 2009-02-22
不太清楚qt2和qt4就QLineEdit方面的差别,应该不是太困难的事情!我的CODE里主要是用QString处理了QLineEdit的Text,也就是说只要qt2.3.7中的QString有相应的处理就可以轻松实现的,否则的话就得自己重写实现处理了!
快速回复
限100 字节
 
上一个 下一个