Qt之QTreeWidget增删节点
Qt之QTreeWidget增删节点
- 概述:
- .h:
- .cpp:
- over:
- 文末一句话:
概述:
1.之前分享过关于QTreeWidget节点操作:链接: QTreeWidget节点操作.
2.这篇文章分享下使用的基本操作(添加节点、删除指定节点、删除所有节点)
.h:
typedef struct
{int nType; std::string strID; std::string strEquipType; std::string strEquioName;
}leftNavigation;public:/** @brief:删除指定id*/void deleteTreeItem(leftNavigation _treeData);/** @brief:删除所有*/void deleteAllTreeItem();
private:/** @brief:增加新建*/void addEquipmentItem(leftNavigation _treeData);/** @brief:*/void removeItem(QTreeWidgetItem *item);
private:QTreeWidget *m_tree;QTreeWidget *m_tree2;QTreeWidget *m_tree3;
.cpp:
if (m_tree == nullptr)return;if (m_tree2 == nullptr)return;if (m_tree3 == nullptr)return;int rootNum = m_tree->topLevelItemCount(); //返回根节点数量int rootCloum = m_tree->columnCount(); //返回根节点列数for (int i = 0; i < rootNum; i++){//设备QTreeWidgetItem *item = m_tree->topLevelItem(i);QString ss = item->text(rootCloum);if (ss.compare(QString::fromStdString(_treeData.strEquipType)) == 0){QTreeWidgetItem *cItem;for (int j = 0; j < item->childCount(); j++){cItem = item->child(j);if (cItem->text(0).compare(QString::fromStdString(_treeData.strID)) == 0){delete cItem;if (item->childCount() == 0)item->setHidden(true);return;}}}}rootNum = m_tree2->topLevelItemCount(); //返回根节点数量rootCloum = m_tree2->columnCount(); //返回根节点列数for (int i = 0; i < rootNum; i++){//结构QTreeWidgetItem *item = m_tree2->topLevelItem(i);if (item->text(rootCloum).compare(QString::fromStdString(_treeData.strEquipType)) == 0){QTreeWidgetItem *cItem;for (int j = 0; j < item->childCount(); j++){cItem = item->child(j);if (cItem->text(0).compare(QString::fromStdString(_treeData.strID)) == 0){delete cItem;if (item->childCount() == 0)item->setHidden(true);return;}}}}
}void LeftDock::deleteAllTreeItem()
{if (m_tree == nullptr)return;if (m_tree2 == nullptr)return;if (m_tree3 == nullptr)return;QTreeWidgetItem *item = m_tree->topLevelItem(0);while (item){removeItem(item);item = m_tree->topLevelItem(0);}item = m_tree2->topLevelItem(0);while (item){removeItem(item);item = m_tree2->topLevelItem(0);}item = m_tree3->topLevelItem(0);while (item){removeItem(item);item = m_tree3->topLevelItem(0);}
}void LeftDock::addEquipmentItem(leftNavigation _treeData)
{//设备if (m_tree == nullptr)return;int rootNum = m_tree->topLevelItemCount(); //返回根节点数量int rootCloum = m_tree->columnCount(); //返回根节点列数if (rootNum == 0){set_tree();//addEquipmentItem(_treeData);}else{for (int i = 0; i < rootNum; i++){//获取设备种类QTreeWidgetItem *pItemType = m_tree->topLevelItem(i);//设备英文名称QString str = pItemType->text(rootCloum);//找到统一设备种类if (str.compare(QString::fromStdString(_treeData.strEquipType)) == 0){//获取单一种类下设备id(item)数量int pItemChilds = pItemType->childCount();if (pItemChilds == 0){//添加itemQTreeWidgetItem *item = new QTreeWidgetItem;item->setText(0, QString::fromStdString(_treeData.strID));pItemType->addChild(item);pItemType->setHidden(false);return;}for (int j = 0; j < pItemChilds; j++){QTreeWidgetItem *pItem = pItemType->child(j);QString id = pItem->text(0);if (id.compare(QString::fromStdString(_treeData.strID)) == 0){//id重复直接返回return;}else{//添加itemQTreeWidgetItem *item = new QTreeWidgetItem;item->setText(0, QString::fromStdString(_treeData.strID));pItemType->addChild(item);return;}}}}}
}void LeftDock::removeItem(QTreeWidgetItem *item)
{int count = item->childCount();if (count == 0)//没有子节点,直接删除{delete item;return;}for (int i = 0; i < count; i++){QTreeWidgetItem *childItem = item->child(0);//删除子节点removeItem(childItem);}delete item;//最后将自己删除
}
over:
欢迎大家关注作者在文末评论、点赞、转发以及批评指正!
如果大家有更好的方法或有问题可以在文末评论一起讨论!
共同学习!
共同进步!
文末一句话:
最近身边有几个前同事 在换工作,然后一直都在做C++、Qt开发,没有特定在某个领域钻研下去(音视频、三维等),再加上5、6+的开发经验导致工资上不去,公司选择少等一系列问题吧!不知道大家现在几年开发经验,这个也是值得思考规划的问题。
Qt之QTreeWidget增删节点相关推荐
- QTreeWidget隐藏节点的两种方式
简述 关于QTreeWidget隐藏节点有两种方式,一种是直接隐藏,一种是间接隐藏,但是两种方式各有差异,下面请听具体解说. 方法一:直接隐藏式 Qt助手里面提供了QTreeWidgetItem::s ...
- QTreeWidget删除节点及子节点
QTreeWidget删除节点及子节点 前言 实现 前言 删除QTreeWidget的节点及其子节点直接delete掉就可以了 实现 //递归删除节点 void MainWindow::removeI ...
- vue2-org-tree 基于VUE的部门组织架构组件,增删节点实现
本文所用组件传送门:vue-org-tree 本文基于antd (其他前端组件框架操作基本都类似的: iview,elementui,boostrap-vue...) 当然,github上还有其他类似 ...
- QT的QTreeWidget节点触发事件(一)
声明:网络上给出的这方面的资料较少,且都针对的是第一级节点的触发绑定事件,但是当遇到有不止一级父节点的子节点后,相关内容较少,因此通过实践整理出了以下方法,进行QTreeWidget节点触发事件的绑定 ...
- qt中QTreeWidget控件的使用
引言 在按照项目设计的样式来实现的时候,发现了一些问题,幸运的是最终找到了解决的方法. 详情 1.QTreeWidget设置列数和隐藏头(这里指的是有1所在的那个部位) ui->treeWidg ...
- Qt 优化QTreeWidget的三态:勾选,未勾选,半勾选
这是以前做过的例子,之前是参考的网上的例子,觉得遍历次数太多,效率不行.自己尝试优化修改了一番.小试牛刀,欢迎拍砖.效果如下图: 示例数据做得比较粗糙.来看看是怎么实现的吧. 功能 勾选树控件的节点, ...
- C++|Qt中QTreeWidget基本操作及完整代码下载
因为下个星期要中要做一个关于QTreeWidget相关的东西,特先学习相关点东西,明天就直接开始做了. 涉及如下技术: 1.在QTreeWidget中添加头(列头). 2.往QTreeWidget中添 ...
- [Qt入门]QTreeWidget控件创建
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidg ...
- oracle runc n m,19cRAC增删节点
由于测试环境打19c补丁失败,导致节点2 d2 crs无法启动!打补丁没有有效备份,亲人两行泪 先删再加节点. 一.删除节点 1.1 删除实例 参考 https://www.cnblogs.com/ ...
- 数据结构Java02【栈、队列、单链表(增删节点)、循环链表、双向循环链表、递归(斐波那契、汉诺塔)】
学习地址:[数据结构与算法基础-java版]
最新文章
- 51Nod-1136 欧拉函数【数论】
- Failed to start SYSV: HA-Proxy is a TCP/HTTP reverse proxy which is particularl
- 如何理解 C# 中的 System.Void 类型?
- 【Java学习笔记六】常用数据对象之String
- centos7限制普通用户访问单一目录下的单一文件
- 信息学奥赛一本通(2068:【例2.6】鸡兔同笼)
- 【nosql】NoSql是什么?
- linux-3.5.4内核添加新的系统调用并测试!!!!!
- python uwsgi_python nginx+uwsgi+WSGI 处理请求详解
- Don't Panic! KRACK 没你想象的那么糟
- Kubernetes持久化存储2——探究实验
- 吾爱404错误页面圈小猫游戏代码
- keil软件是干嘛的?keil软件怎么用?
- 关注这场直播,了解能源行业双碳目标实现路径
- Restorator软件使exe文件都不能打开,任务管理器不支持此接口
- 15、react 的 非受控组件 和 受控组件
- 关于固态硬盘闪存芯片研究资料收集
- python工资有多少-Python工程师工资多少
- h5 视频活体检测(人脸认证)的前端
- 新产品Digi XBee RR无线模块迁移指南
热门文章
- 【diannaoxitong】word安全模式怎么解除?word安全模式快速解除方法
- 理解 LSTM 网络
- littleVGL开发(8):消息弹窗控件(lv_mbox)
- ora-20011 ora-01555
- 深入理解oracle的context,读者对于《深入解析Oracle》的评价
- html图片原始比例_html图片如何按屏幕大小等比例缩放?
- 苹果系统中国日历服务器,ios日历中国节日不见了(2021年苹果日历订阅地址)...
- 非线性薛定谔方程用matlab,非线性薛定谔方程数值解的matlab仿真.docx
- 转载:TD之父李世鹤:TD即将安乐死
- 中国3G蛋糕1.5万亿 10倍三峡工程