L o a d i n g . . .
主打一个C++
文章详情

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;

    }
}

展示:

搜索前

image.png

搜索关键字 15 结果

image.png

搜索关键字 测试 结果

image.png

搜索关键字 目录 结果

image.png


*转载请注明出处:原文链接:https://cpp.vin/page/93.html

作者近期文章
  • 随手笔记
  • 主打一个C++   2025-01-11 20:02:01
  • 都2000000025年了。还有不能随意访问guthub的,仔细看。在国内其实是可以正常访问的,gfw并没屏蔽。这里给出其中一个简单直接的方法稳定访问。1. 随便百度一个”dn
提示
×
确定
数据库执行: 7次 总耗时: 0.02s
页面加载耗时: 



wechat +447752296473
wechat cpp-blog