我在设计自己的控件的时候,遇到了按钮点击不管用的问题,而且是有的自定义控件不管用,有的管用,有的一开始管用,多点几次就不管用了,
它是这样的,一个lineEdit和位于两侧的按钮,分别控制lineEdit的显示数字,左侧点击一下少0.01,右侧按钮点击一次加0.01,
结果就是不稳定。一开始百思不得其解,我的自定义控件都是一样的,为什么有的用起来就还行呢?
debug过程
一开始的话我是调了一个参数,用于判断我是点击+-按钮而不是进行滑动,难道是我设置的区分点击和滑动的像素阈值太低了?结果调高也不管用。
后来想到,我在更新lineEdit数据的时候设置了一个比较的阈值,新值和老值区别很小的时候会直接返回,当时的比较条件是<0.1,因为按钮点一下就是0.01嘛,而且我的lineEdit是可以滑动变化值的,我不想精度设的过高,但是没想到就是因为这个原因导致了按钮点击不管用。
具体来说就是double类型有不确定的拖尾,可能导致相减<0.1,从而导致了这种情况,我知道有拖尾,但是没想到影响到了前两位的判断,以后遇到小数的比较要更加小心,可以适当的减少小数,比如把条件设置为<0.00001