仿web的UI的输入框的输入自动检索下拉显示选择。
同一个界面上有多个lineedit,每个lineedit输入时,底部弹出下拉的列表框,列表框内容与输入内容是模糊匹配的关系,可以选择列表中需要的那一项,点击后,填充到对应的lineedit中,开发过程中遇到了以下几个问题:
【备注1】:自定义的lineedit中覆盖了focusinevent()和focusoutevent()的方法,并在这两个方法中分别发出自定义的focusin、focusout的信号;
lineedit在使用的地方,定义焦点in和out的槽函数,以做处理;
1、鼠标点击光标显示到lineedit后,弹出list控件,然后lineedit失去焦点,然后又触发in,list不断的闪烁显示;
【解决方法】:
给lineedit的父窗口设置焦点策略,设置为点击获取焦点,否则会父窗口显示会直接将焦点in到lineedit中,就会死循环的in/out;
2、解决1后,鼠标点击进入lineedit中,list显示,然后点击窗口的其他位置,list不消隐,即一直没有触发lineedit的focusout事件;
【解决方法】:
设置lineedit的焦点事件也是点击获取焦点;
3、解决1、2后,鼠标点击第二个以后的lineedit中后,鼠标跳入第一个lineedit中,与1、2有关,同样方法解决;
4、鼠标点击list中的项时,触发了lineedit的focusout事件,实际上应该还保持焦点在lineedit中得状态;
【解决方法】:
将list的焦点策略设置设置为NoFocus即可。
参考:
https://blog.youkuaiyun.com/qq_42108501/article/details/117166255