一、效果:
左边为QLineEdit 右边为QCombobox
二、代码
QStringList list;
QStringList list1;
list << "2" << "3" << "4" << "45" << "456" <<"545"<< "5" << "56" << "567";
list1 << "2" << "3" << "0" << "456" <<"4789"<< "5" << "56" << "567";
QCompleter *completer = new QCompleter(list, this);
//注意点1:不能用QCompleter completer(list ,this)的方式来生成局部变量,因为局部变量栈空间消失后,会导致之后的QLineEdit无法实现模糊查询。
ui.lineEdit->setCompleter(completer);
//ui.comboBox->setCompleter(completer); //注意点2:ui.comboBox先设置completer,在添加items会导致无法实现模糊查询效果
ui.comboBox->addItems(list1); //注意点3:QCompleter的list为准,不是QComboBox的list1的。所以需要保证两者的list一致才行。
ui.comboBox->setEditable(true);
ui.comboBox->setCompleter(completer);
三、注意点
注意点1:不能用QCompleter completer(list ,this)的方式来生成局部变量,因为局部变量栈空间消失后,会导致之后的QLineEdit无法实现模糊查询。
注意点2:ui.comboBox先设置completer,在添加items会导致无法实现模糊查询效果
注意点3:QCompleter的list为准,不是QComboBox的list1的。所以需要保证两者的list一致才行。