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.mzph.cn/news/614849.shtml

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

相关文章

css 怎么绘制一个带圆角的渐变色的边框

1&#xff0c;可以写两个样式最外面的div设置一个渐变的背景色。里面的元素使用纯色。但是宽高要比外面元素的小。可以利用里面的元素设置padding这样挡住部分渐变色。漏出来的渐变色就像边框一样。 <div class"cover-wrapper"> <div class"item-cover…

leetcode 每日一题 2024年01月11日 构造有效字符串的最少插入数

题目 2645. 构造有效字符串的最少插入数 给你一个字符串 word &#xff0c;你可以向其中任何位置插入 “a”、“b” 或 “c” 任意次&#xff0c;返回使 word 有效 需要插入的最少字母数。 如果字符串可以由 “abc” 串联多次得到&#xff0c;则认为该字符串 有效 。 示例 …

【ChatGPT-Share,国内可用】GPTS商店大更新:一探前沿科技的魅力!

使用地址&#xff1a;https://hello.zhangsan.cloud/list GPTS商店预览,王炸更新 精选应用&#xff1a; 系统内置应用&#xff1a; 绘画应用&#xff1a; 写作应用&#xff1a; 高效工具应用&#xff1a; 学术搜索和分析应用&#xff1a; 编程应用&#xff1a; 教育应…

万字长文 详细讲述 计算机网络层

文章目录 网络层网络层的几个重要概念网络层的两个层面 网际协议 IP虚拟互连网络IP 地址IP 地址及其表示方法IP 地址与 MAC 地址地址解析协议 ARPIP 数据报的格式 IP层转发分组过程基于终点的转发最长前缀匹配 网际控制报文协议 ICMPICMP 报文的种类ICMP 的应用举例IPv6 的基本…

Discourse 未活动的用户是怎么处理的

Discourse 目前有一个参数为 clean up inactive users after days 来控制不活跃或者未激活的用户。 如果你的用户满足下面的条件的话&#xff0c;系统将会在到期后对用户进行清理和删除 从未在 Discourse 站点上发布任何内容 如果你在 Discourse 站点上发布了内容&#xff0c…

2024美赛数学建模思路 - 复盘:光照强度计算的优化模型

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米&#xff0c;宽为12米&…

【PaperReading】5. Open-Vocabulary SAM

Category Content 论文题目 Open-Vocabulary SAM: Segment and Recognize Twenty-thousand Classes Interactively 作者 Haobo Yuan1 Xiangtai Li1 Chong Zhou1 Yining Li2 Kai Chen2 Chen Change Loy1 1S-Lab, Nanyang Technological University 2Shanghai Artificial In…

排序之希尔排序

希尔排序&#xff0c;也被称为缩小增量排序&#xff0c;是一种基于插入排序的算法。它通过比较相距一定间隔的元素&#xff0c;来工作&#xff0c;然后再逐渐减小间隔&#xff0c;直到整个数组排序完成。这种算法的主要优点是对于部分有序的数组&#xff0c;其效率非常高&#…

NLP论文阅读记录 - 05 | 2023 抽象总结与提取总结:实验回顾

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作2.1 提取方法2.2 抽象方法2.3 数据集 三.本文方法四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结思考 前言 Abstractive vs. Extractiv…

ARP协议详解

1、ARP协议的定义 地址解析协议(Address Resolution Protocol&#xff0c;ARP)&#xff1a;ARP协议可以将IPv4地址(一种逻辑地址)转换为各种网络所需的硬件地址(一种物理地址)。换句话说&#xff0c;所谓的地址解析的目标就是发现逻辑地址与物理地址的映射关系。 ARP仅用于IPv…

代币中的decimal精度代表了什么

精度的意义在于允许发送小数的代币。举例&#xff0c;一个CAT代币合约的精度为6。那么 你拥有1个CAT就意味着合约中的balance 1 * 10^6 , 转账 0.1CAT出去的话&#xff0c;就需要输入 0.1*10^6 10^5。 也就时在涉及代币时&#xff0c;查询到的余额、转账的代币数量 都和 代币…

Sqoop入门指南:安装和配置

Sqoop是一个强大的工具&#xff0c;用于在Hadoop和关系型数据库之间高效传输数据。在本篇文章中&#xff0c;将深入探讨如何安装和配置Sqoop&#xff0c;以及提供详细的示例代码。 安装Java和Hadoop 在开始安装Sqoop之前&#xff0c;首先确保已经成功安装了Java和Hadoop。Sqo…

视频转音频小小代码

前言 特定的场景下&#xff0c;人的需求往往容易变得奇特&#xff0c;比方说&#xff0c;mp4的文件&#xff0c;有时候我只想听声音&#xff0c;而不需要看内容&#xff0c;这个时候把它转换成acc更加节省存储空间&#xff0c;变成了音频带上耳机听就可以了。 那么视频怎么转音…

2023年全国职业院校技能大赛软件测试赛题—单元测试卷⑩

单元测试 一、任务要求 题目1&#xff1a;根据下列流程图编写程序实现相应处理&#xff0c;程序根据两个输入参数iRecordNum和IType计算x的值并返回。编写程序代码&#xff0c;使用JUnit框架编写测试类对编写的程序代码进行测试&#xff0c;测试类中设计最少的测试数据满足基路…

yolov8n 瑞芯微RKNN和地平线Horizon芯片仿真测试部署,部署工程难度小、模型推理速度快

特别说明&#xff1a;参考官方开源的yolov8代码、瑞芯微官方文档、地平线的官方文档&#xff0c;如有侵权告知删&#xff0c;谢谢。 模型和完整仿真测试代码&#xff0c;放在github上参考链接 模型和代码。 因为之前写了几篇yolov8模型部署的博文&#xff0c;存在两个问题&…

全网首发!Yolov8_obb旋转框检测(DOTA1.0数据集)

一、YOLOv8环境搭建 &#xff08;1&#xff09;Pytorch的安装 如果你的环境没有部署请参考本人文章&#xff1a;NLP笔记&#xff08;2&#xff09;——PyTorch的详细安装_安装torchnlp-CSDN博客 &#xff08;2&#xff09;下载最新的Yolov8-obb代码&#xff1a; https://git…

【修图】AI修图工具

人脸替换 免费的人脸替换工具&#xff1a; Face Swap&#xff1a; https://vmodel.ai/face-swap 支持单人换脸、多人换脸 AI消除 SnapEdit https://snapedit.app/remove-object 不付费的话只能下载清晰度较低的版本 但我试了几个在线的AI消除工具&#xff0c;SnapEdit算是…

详细分析Java中的@JsonFormat注解和@DateTimeFormat注解

目录 前言1. JsonFormat注解2. DateTimeFormat注解3. Demo3.1 无注解3.2 有注解 4. 拓展 前言 下文中涉及MybatisPlus的逻辑删除的知识&#xff0c;可看我之前这篇文章&#xff1a;详细讲解MybatisPlus实现逻辑删除 对应的Navicat设置数据库最新时间可看我这篇文章&#xff1…

生活自来水厂污水处理设备需要哪些

生活自来水厂是确保我们日常用水质量安全的重要设施。在自来水的生产过程中&#xff0c;污水处理设备是不可或缺的环节。那么&#xff0c;生活自来水厂的污水处理设备都有哪些呢&#xff1f;本文将为您详细介绍。 首先&#xff0c;生活自来水厂的污水处理设备主要包括预处理设备…

第11章 GUI Page489~494 步骤三十 保存画板文件

为“保存”菜单项 MenuItemFileSave挂接事件响应函数&#xff1a; 实际运行时&#xff0c;现版TrySaveFile()函数有点儿傻&#xff0c;点击保存菜单&#xff0c;还会弹出对话框&#xff0c;问我们“要不要保存” 修改TrySaveFile()函数 函数声明修改为&#xff1a; 函数实现修…