作者:fo切為祢 | 来源:互联网 | 2023-05-17 10:08
我现在要做一个输入框,当输入框有内容变化或正在编辑时,按照输入框里面的文字进行搜索并在搜索框下方显示搜索结果。现在如果长按一个键的时候,会出现卡的情况,输入框中的显示也不是流畅的一个一个字符显示出
我现在要做一个输入框,当输入框有内容变化或正在编辑时,按照输入框里面的文字进行搜索并在搜索框下方显示搜索结果。
现在如果长按一个键的时候,会出现卡的情况,输入框中的显示也不是流畅的一个一个字符显示出来。
现在想实现:当按键长按时,不进行搜索,等按键弹起来时再进行搜索;或者两次按键之间间隔非常小的时候,上一次按键时不进行搜索。
我开始想通过KeyPress和KeyRelease事件来判断,但是通过测试发现,键盘长按时,系统会自动在加上KeyPress和KeyRelease,比方说长按A键,连续输入了10个a,就会出现10此KeyPress事件和KeyRelease事件。
请问下有什么好的解决方法没?现在我想到的方法就是起一个线程,通过检查两次按键之间的时间间隔来判断是否需要进行搜索。
4 个解决方案
在keyReleaseEvent里面 ,通过 e->isAutoRepeat()方法检测,如果按住键不动的时候,这个方法返回值为true,当松开的时候返回值为false。当你检测到false时进行搜索就好了。