QLineEdit 与 QCombobox 实现基于QCompleter的模糊查询

一、效果:

QLineEdit 与 QCombobox 实现基于QCompleter的模糊查询_第1张图片QLineEdit 与 QCombobox 实现基于QCompleter的模糊查询_第2张图片

左边为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一致才行。

 

 

你可能感兴趣的:(Qt,Qt,QLineEdit,QComboBox)