一.前言
QComboBox提供了可供用户下来选择需要的项的功能,但是如果可选的项太多了,让用户自己去一个个去选择,从用户体验上不好,故需要添加一个搜索功能,但是搜索功能又不能让用户输入完整的名称,不然就和手动去选择没什么两样了,故需要有一个模糊查询的功能,输入单个字符,即刻显示出可能的结果供用户选择。该需求可抽象为自动补全的功能
二.功能实现
1.查阅资料知Qt提供了一个QCompleter自动补全类,可用来实现该需求
2.核心代码
// 数据源
itemList<<"广东"<<"北京"<<"河北省"<<"河南"<<"广西"<<"abnc"<<"abbb";
// 下拉框添加数据
ui->comboBox->addItems(itemList);
// 设置可编辑
ui->comboBox->setEditable(true);
// 自动补全实例的构建
QCompleter *comp = new QCompleter(itemList,ui->comboBox->model());
// 设置匹配模式,只要包含就显示
comp->setFilterMode(Qt::MatchContains);
// 设置大小写区分,不区大小写
comp->setCaseSensitivity(Qt::CaseInsensitive);
// 设置向用户提供补全的方式
comp->setCompletionMode(QCompleter::PopupCompletion);
// 装载补全实例
ui->comboBox->setCompleter(comp);
3.效果