是否可以在打开的ComboBox中检测关键事件?

时间:2015-02-27 00:25:17

标签: qt combobox qml qt-quick qtquick2

我想在ComboBox中使用大量项目实现某种搜索。它包含约500行,按名称排序。因此,当用户按A键时,我希望按此方式执行,只显示以A...开头的行,然后按s它会显示以As...开头的行等。但是Key事件仅在ComboBox关闭时才有效。如果显示下拉列表,则不会发生任何键事件,除了一些内部事件,如箭头和Esc / Enter。

任何想法如何做到这一点?任何建议和建议将不胜感激!

1 个答案:

答案 0 :(得分:2)

您不需要这么难的代码,有极其简单快速的解决方案。自动完成有一个特殊类 - QCompleter。所以答案很简单,用所需数据创建QCompleter并使用setCompleter() setter将其设置为comboBox。

QCompleter *completer = new QCompleter(mdl, this);//mdl is a model with some data
completer->setCaseSensitivity(Qt::CaseInsensitive);
ui->comboBox->setCompleter(completer);

没有完成者的结果(原始的comboBox):

enter image description here

完成者的结果:

enter image description here