搜索输入框:如何实现长按某个键的时候暂停搜索,等按键弹起来时就立即进行搜索

bingyu_2008 2012-06-27 02:48:21
我现在要做一个输入框,当输入框有内容变化或正在编辑时,按照输入框里面的文字进行搜索并在搜索框下方显示搜索结果。
现在如果长按一个键的时候,会出现卡的情况,输入框中的显示也不是流畅的一个一个字符显示出来。
现在想实现:当按键长按时,不进行搜索,等按键弹起来时再进行搜索;或者两次按键之间间隔非常小的时候,上一次按键时不进行搜索。
我开始想通过KeyPress和KeyRelease事件来判断,但是通过测试发现,键盘长按时,系统会自动在加上KeyPress和KeyRelease,比方说长按A键,连续输入了10个a,就会出现10此KeyPress事件和KeyRelease事件。
请问下有什么好的解决方法没?现在我想到的方法就是起一个线程,通过检查两次按键之间的时间间隔来判断是否需要进行搜索。
...全文
154 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bingyu_2008 2012-06-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

在keyReleaseEvent里面 ,通过 e->isAutoRepeat()方法检测,如果按住键不动的时候,这个方法返回值为true,当松开的时候返回值为false。当你检测到false时进行搜索就好了。
[/Quote]
收到,马上去试试看,谢谢!
shen_wei 2012-06-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
在keyReleaseEvent里面 ,通过 e->isAutoRepeat()方法检测,如果按住键不动的时候,这个方法返回值为true,当松开的时候返回值为false。当你检测到false时进行搜索就好了。
[/Quote]

不错!!+++
xiebin133 2012-06-27
  • 打赏
  • 举报
回复
在keyReleaseEvent里面 ,通过 e->isAutoRepeat()方法检测,如果按住键不动的时候,这个方法返回值为true,当松开的时候返回值为false。当你检测到false时进行搜索就好了。
jdwx 2012-06-27
  • 打赏
  • 举报
回复
用定时器,检测到N秒不按键,就搜索

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧