我使用setEditable(true)
使QComboBox
可编辑,当我输入cy
时,完成者的弹出视图将可见并列出所有可能的结果,例如:cyan
、cyana
、liecyan
......但是当我在键盘(Qt::Key_Down
(中按向下键时,第一个cyan
将被选中,并且QComboBox的lineedit的文本将被设置cyan
同时,完成者的弹出视图更新,仅显示cyan
。如何自定义它以使其表现得像 Web 的select
组件。
我已经解决了这个问题。
1.class MyListView : public QListView
2. 需要实现MyListView's bool event(...)
关注类型是QEvent::ShortcutOverride
3.基于QEvent::ShortcutOverride
,当用户按Qt:Key_Up
或Qt::Key_Down
时,设置为falg
false,当用户释放键时,设置为flag
true
3.QCompleter
使用 setPopup(MyListView
的实例(覆盖默认列表视图 4. 将 QCompleter 的正则表达式设置为在falg
为 true 时工作 5.我得到了我想要的