Qt QTableView和QStandardItemModel包含搜索出现的文本及隐藏顶层节点

前言

使用Qt进行开发时,树结构一般是使用QTreeWidget或使用QTreeView+QStandardItemModel结合。

查找

如果要进行查找树的所有项中,是否包含某文本,就需要遍历。

QTreeWidget查找

以下是使用QTreeWidget进行查找:
首先初始化一些树结构

    QTreeWidget* pTW = new QTreeWidget(this);setCentralWidget(pTW);for(int i = 0; i < 3; ++i){QTreeWidgetItem* pTWI = new QTreeWidgetItem(QStringList() << QString("%1").arg(i));for(int j = 0; j < 3; ++j){QTreeWidgetItem* pTWIChild = new QTreeWidgetItem(QStringList() << QString("%1_%2").arg(i).arg(j));pTWI->addChild(pTWIChild);}pTW->addTopLevelItem(pTWI);}pTW->expandAll();

显示如下:
image.png
如果要查找包含2的item,代码如下:

    QTreeWidgetItemIterator it(pTW);while (*it) {QTreeWidgetItem* pItem = *it;if(pItem->text(0).contains("2")){qDebug().noquote() << "查找到 : " << pItem->text(0);}++it;}

image.png
image.png

QStandardItemModel查找

但如果使用QTreeView视图显示树,查阅其帮助手册,里面并没有迭代器进行查找。但看QStandardItemModel手册,发现,其有findItems()方法。
首先初始化一些数据:

    QTreeView* pTV = new QTreeView();setCentralWidget(pTV);QStandardItemModel* pModel = new QStandardItemModel(pTV);pTV->setModel(pModel);for(int i = 0; i < 3; ++i){QStandardItem* pItem = new QStandardItem(QString("%1").arg(i));for(int j = 0; j < 3; ++j){QStandardItem* pItemTmp = new QStandardItem(QString("%1_%2").arg(i).arg(j));pItem->setChild(j, pItemTmp);}pModel->setItem(i, pItem);}pTV->expandAll();

显示如下:
image.png
进行查找,主要是第二个参数的设置,设置为递归及包含查找,不然查找出问题。

    for(auto var :pModel->findItems("2", Qt::MatchRecursive | Qt::MatchContains)){qDebug().noquote() << "查找到 : " <<  var->text();}

image.png
image.png

设置顶层Item隐藏

QStandardItemModel设置隐藏

pTV->setRowHidden(0, pTV->rootIndex(), true);

设置完后,节点0被隐藏
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/341340.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php大型酒店管理系统源码(多酒店版)带安装手册

php大型酒店管理系统源码(多酒店版&#xff09;带安装手册 系统的运行环境要求PHP7.2以上 功能介绍&#xff1a; 房间动态、房间管理、优惠活动、预定信息、商品管理、营业查询、交班管理 会员营销、查看房价、数据统计、客房服务、物品租借、夜审设置、系统设置 酒店设置、计费…

Windows7共享文档—开启方法及用户权限设置

使用计算机的朋友&#xff0c;在工作中经常需要在局域网中将文件共享给其他用户&#xff0c;这样其他人可以方便的通过局域网查看&#xff0c;甚至修改这些共享文件。当然&#xff0c;根据文件的重要程度&#xff0c;使用等级不同&#xff0c;不同的用户会赋予不同的权限&#…

三种风格:山海鲸可视化软件模板的个性化定制之旅“

当我们谈论数据可视化时&#xff0c;一个好的可视化组件套件模板至关重要。一个优秀的模板不仅可以提高数据可视化的效果&#xff0c;还能让用户更加深入地探索和理解数据。作为山海鲸可视化软件的开发者&#xff0c;在提供免费好用的产品同时我们也希望最大限度降低用户设计难…

Starrocks监控方案

下载安装包 Download | Prometheus Download Grafana | Grafana Labs 部署prometheus 配置文件 global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: StarRocks_Cluster metrics_path: /metrics static_configs: - targets: [192.168.110…

Idea中web项目一些配置问题

1. 产生原因 我从github上clone项目下来后发现idea的一些配置没有带下来需要自己配, 这花了我很多时间, 所以这里总结一下。 2. 具体配置 首先是利用idea进行clone操作 将对应仓库的ssh链接拷贝到此处即可 完成后项目就被clone到了本地, 下面进入正式配置 首先选择所要使用…

矿山无人驾驶方案

矿山无人驾驶运输系统&#xff0c;可实现露天矿采煤装载运输的无人化&#xff0c;满足智能矿山安全、高效、绿色、环保等目标。 无人驾驶应用的总体技术架构包括“车端、场端、云端”三个层面以及相应的安全保障体系&#xff0c;其中车端的智能矿卡具备车辆感知、通信、决策和执…

Stream流递归查询部门树

Java 递归查询树是很常见的功能&#xff0c;也有很多写法&#xff0c;小编这里记录stream流递归部门树写法&#xff0c;自从小编用上stream流之后&#xff0c;是爱不释手&#xff0c;的确是个不错的好东西&#xff0c;话不多说&#xff0c;直接上代码 第一步&#xff1a;先创建…

Jenkins基础篇--添加用户和用户权限设置

添加用户 点击系统管理&#xff0c;点击管理用户&#xff0c;然后点击创建用户&#xff08;Create User&#xff09; 用户权限管理 点击系统管理&#xff0c;点击全局安全配置&#xff0c;找到授权策略&#xff0c;选择安全矩阵&#xff0c;配置好用户权限后&#xff0c;点击…

vue3移动端实现pdf预览

第一种方式&#xff1a;使用vue-pdf-embed和vue3-pdfjs 使用的插件有&#xff1a; npm i vue-pdf-embed npm i vue3-pdfjshtml部分&#xff1a; <div ref"preRef" v-loading"loading" class"pdf-preview"><div v-if"pdfState.so…

C++算法学习心得五.二叉树(3)

1.合并二叉树&#xff08;617题&#xff09; 题目要求&#xff1a; 给定两个二叉树&#xff0c;想象当你将它们中的一个覆盖到另一个上时&#xff0c;两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠&#xff0c;那么将他们…

Vue面试之组件通信的方式总结(下篇)

Vue面试之组件通信的方式总结 $refprovide&injectprovideinject EventBus事件总线vuex 最近在整理一些前端面试中经常被问到的问题&#xff0c;分为vue相关、react相关、js相关、react相关等等专题&#xff0c;可持续关注后续内容&#xff0c;会不断进行整理~ 在Vue框架中&…

CSS 选择器全攻略:从入门到精通(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…