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增删节点相关推荐

  1. QTreeWidget隐藏节点的两种方式

    简述 关于QTreeWidget隐藏节点有两种方式,一种是直接隐藏,一种是间接隐藏,但是两种方式各有差异,下面请听具体解说. 方法一:直接隐藏式 Qt助手里面提供了QTreeWidgetItem::s ...

  2. QTreeWidget删除节点及子节点

    QTreeWidget删除节点及子节点 前言 实现 前言 删除QTreeWidget的节点及其子节点直接delete掉就可以了 实现 //递归删除节点 void MainWindow::removeI ...

  3. vue2-org-tree 基于VUE的部门组织架构组件,增删节点实现

    本文所用组件传送门:vue-org-tree 本文基于antd (其他前端组件框架操作基本都类似的: iview,elementui,boostrap-vue...) 当然,github上还有其他类似 ...

  4. QT的QTreeWidget节点触发事件(一)

    声明:网络上给出的这方面的资料较少,且都针对的是第一级节点的触发绑定事件,但是当遇到有不止一级父节点的子节点后,相关内容较少,因此通过实践整理出了以下方法,进行QTreeWidget节点触发事件的绑定 ...

  5. qt中QTreeWidget控件的使用

    引言 在按照项目设计的样式来实现的时候,发现了一些问题,幸运的是最终找到了解决的方法. 详情 1.QTreeWidget设置列数和隐藏头(这里指的是有1所在的那个部位) ui->treeWidg ...

  6. Qt 优化QTreeWidget的三态:勾选,未勾选,半勾选

    这是以前做过的例子,之前是参考的网上的例子,觉得遍历次数太多,效率不行.自己尝试优化修改了一番.小试牛刀,欢迎拍砖.效果如下图: 示例数据做得比较粗糙.来看看是怎么实现的吧. 功能 勾选树控件的节点, ...

  7. C++|Qt中QTreeWidget基本操作及完整代码下载

    因为下个星期要中要做一个关于QTreeWidget相关的东西,特先学习相关点东西,明天就直接开始做了. 涉及如下技术: 1.在QTreeWidget中添加头(列头). 2.往QTreeWidget中添 ...

  8. [Qt入门]QTreeWidget控件创建

    #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidg ...

  9. oracle runc n m,19cRAC增删节点

    由于测试环境打19c补丁失败,导致节点2  d2 crs无法启动!打补丁没有有效备份,亲人两行泪 先删再加节点. 一.删除节点 1.1 删除实例 参考 https://www.cnblogs.com/ ...

  10. 数据结构Java02【栈、队列、单链表(增删节点)、循环链表、双向循环链表、递归(斐波那契、汉诺塔)】

    学习地址:[数据结构与算法基础-java版]                  

最新文章

  1. 51Nod-1136 欧拉函数【数论】
  2. Failed to start SYSV: HA-Proxy is a TCP/HTTP reverse proxy which is particularl
  3. 如何理解 C# 中的 System.Void 类型?
  4. 【Java学习笔记六】常用数据对象之String
  5. centos7限制普通用户访问单一目录下的单一文件
  6. 信息学奥赛一本通(2068:【例2.6】鸡兔同笼)
  7. 【nosql】NoSql是什么?
  8. linux-3.5.4内核添加新的系统调用并测试!!!!!
  9. python uwsgi_python nginx+uwsgi+WSGI 处理请求详解
  10. Don't Panic! KRACK 没你想象的那么糟
  11. Kubernetes持久化存储2——探究实验
  12. 吾爱404错误页面圈小猫游戏代码
  13. keil软件是干嘛的?keil软件怎么用?
  14. 关注这场直播,了解能源行业双碳目标实现路径
  15. Restorator软件使exe文件都不能打开,任务管理器不支持此接口
  16. 15、react 的 非受控组件 和 受控组件
  17. 关于固态硬盘闪存芯片研究资料收集
  18. python工资有多少-Python工程师工资多少
  19. h5 视频活体检测(人脸认证)的前端
  20. 新产品Digi XBee RR无线模块迁移指南

热门文章

  1. 【diannaoxitong】word安全模式怎么解除?word安全模式快速解除方法
  2. 理解 LSTM 网络
  3. littleVGL开发(8):消息弹窗控件(lv_mbox)
  4. ora-20011 ora-01555
  5. 深入理解oracle的context,读者对于《深入解析Oracle》的评价
  6. html图片原始比例_html图片如何按屏幕大小等比例缩放?
  7. 苹果系统中国日历服务器,ios日历中国节日不见了(2021年苹果日历订阅地址)...
  8. 非线性薛定谔方程用matlab,非线性薛定谔方程数值解的matlab仿真.docx
  9. 转载:TD之父李世鹤:TD即将安乐死
  10. 中国3G蛋糕1.5万亿 10倍三峡工程