文章详情
QT树型列表QTreeWidget模糊匹配搜索函数封装
Posted on 2020-10-18 11:37:33 by 主打一个C++
为方便使用,直接传入树型对象和模糊字符即可完成调用。
完整函数代码:
//模糊搜索树型框显示匹配结果函数
void searchItems(QTreeWidget *tree, const QString &keyword) {
// 遍历根节点,设置可见性为结果
bool isFind = false;
for (int i = 0; i < tree->topLevelItemCount(); ++i) {
QTreeWidgetItem *topItem = tree->topLevelItem(i);
//bool itemMatches = topItem->text(0).contains(keyword, Qt::CaseInsensitive);
topItem->setExpanded(false);
//继续搜索子节点,同样以可见性
for (int j = 0; j < topItem->childCount(); ++j) {
QTreeWidgetItem *childItem = topItem->child(j);
if(keyword.isEmpty()){
isFind = true;
childItem->setHidden(!isFind);
}else{
//匹配
bool childMatches = childItem->text(0).contains(keyword, Qt::CaseInsensitive);
if(!isFind){
isFind = childMatches;
}
//按匹配结果处理
childItem->setHidden(!childMatches);
}
}
//隐藏不匹配项目
topItem->setHidden(!isFind);
//展开项目
if(isFind && !keyword.isEmpty()){
topItem->setExpanded(true);
}
//重置结果
isFind = false;
}
}
展示:
搜索前
搜索关键字 15 结果
搜索关键字 测试 结果
搜索关键字 目录 结果
*转载请注明出处:原文链接:https://cpp.vin/page/93.html