在主函数中增加:

init();connect(ui->treeWidget,SIGNAL(itemChanged(QTreeWidgetItem*, int)),this,SLOT(treeItemChanged(QTreeWidgetItem*,int)));

函数实现:
void Widget::init()
{ui->treeWidget->setHeaderLabels(QStringList()<<"123"<<"234");//设置列名ui->treeWidget->clear();QTreeWidgetItem* group1=new QTreeWidgetItem(ui->treeWidget);group1->setText(0,"group1");group1->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);group1->setCheckState(0,Qt::Unchecked);QTreeWidgetItem* subItem11=new QTreeWidgetItem(group1);subItem11->setText(0,"subItem11");subItem11->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);subItem11->setCheckState(0,Qt::Unchecked);QTreeWidgetItem* subItem12=new QTreeWidgetItem(group1);subItem12->setText(0,"subItem12");subItem12->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);subItem12->setCheckState(0,Qt::Unchecked);QTreeWidgetItem* subItem13=new QTreeWidgetItem(group1);subItem13->setText(0,"subItem13");subItem13->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);subItem13->setCheckState(0,Qt::Unchecked);QTreeWidgetItem* subItem14=new QTreeWidgetItem(group1);subItem14->setText(0,"subItem14");subItem14->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);subItem14->setCheckState(0,Qt::Unchecked);QTreeWidgetItem* group2=new QTreeWidgetItem(ui->treeWidget);group2->setText(0,"group2");group2->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);group2->setCheckState(0,Qt::Unchecked);QTreeWidgetItem* subItem21=new QTreeWidgetItem(group2);subItem21->setText(0,"subItem21");subItem21->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);subItem21->setCheckState(0,Qt::Unchecked);QTreeWidgetItem* subItem22=new QTreeWidgetItem(group2);subItem22->setText(0,"subItem22");subItem22->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);subItem22->setCheckState(0,Qt::Unchecked);QTreeWidgetItem* subItem23=new QTreeWidgetItem(group2);subItem23->setText(0,"subItem23");subItem23->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);subItem23->setCheckState(0,Qt::Unchecked);QTreeWidgetItem* subItem24=new QTreeWidgetItem(group2);subItem24->setText(0,"subItem24");subItem24->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);subItem24->setCheckState(0,Qt::Unchecked);}void Widget::updateParentItem(QTreeWidgetItem *item)
{QTreeWidgetItem* parent=item->parent();if(parent==NULL){return;}int selectedCount=0;int childCount=parent->childCount();for(int i=0;i<childCount;i++){QTreeWidgetItem* childItem=parent->child(i);if(childItem->checkState(0)==Qt::Checked){selectedCount++;}}if(selectedCount<=0){parent->setCheckState(0,Qt::Unchecked);}else if(selectedCount>0&&selectedCount<childCount){parent->setCheckState(0,Qt::PartiallyChecked);}else if(selectedCount==childCount){parent->setCheckState(0,Qt::Checked);}
}void Widget::treeItemChanged(QTreeWidgetItem *item, int column)
{//QString itemText=item->text(0);if(Qt::Checked==item->checkState(0)){//QTreeWidgetItem* parent=item->parent();int count=item->childCount();if(count>0){for(int i=0;i<count;i++){item->child(i)->setCheckState(0,Qt::Checked);}}else{updateParentItem(item);}}else if(Qt::Unchecked==item->checkState(0)){int count=item->childCount();if(count>0){for(int i=0;i<count;i++){item->child(i)->setCheckState(0,Qt::Unchecked);}}else{updateParentItem(item);}}
}

  

转载于:https://www.cnblogs.com/wiessharling/archive/2013/01/05/2845689.html

QTreeWidget的基本操作相关推荐

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

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

  2. Qt学习笔记之常用控件QTreeWidget

    一.QTreeWidget Class The QTreeWidget class provides a tree view that uses a predefined tree model. Mo ...

  3. 数据结构(03)— 数据处理基本操作(数据的查找、新增、删除、修改)

    我们先来看一个关于查找的例子.查找,就是从复杂的数据结构中,找到满足某个条件的元素.通常可从以下两个方面来对数据进行查找操作:​ 根据元素的位置或索引来查找: 根据元素的数值特征来查找. 针对上述两种 ...

  4. pytorch方法,Tensor及其基本操作_重点

    由于之前的草稿都没了,现在只有重写-. 我好痛苦 本章只是对pytorch的常规操作进行一个总结,大家看过有脑子里有印象就好,知道有这么个东西,需要的时候可以再去详细的看,另外也还是需要在实战中多运用 ...

  5. Gradle安装使用以及基本操作

    转自:https://www.cnblogs.com/linkstar/p/7899191.html Gradle安装使用以及基本操作 阅读目录 简单介绍 安装 使用idea创建一个web的Gradl ...

  6. c++文件读取空格_程序员术与道:术—C语言对文件进行处理,文件处理的基本操作...

    各种编程语言都实现了文件的基本操作,提供了对应的接口,本篇文章先为你介绍C语言对文件进行处理和文件处理的基本操作.主要从以下几个方面进行介绍: 读取文件 写入文件 重命名文件 读取目录 读取目录下的文 ...

  7. Python Qt GUI设计:QTableView、QListView、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)

    目录 1.QTableView类 2.QListView类 3.QListWidet类 4.QTableWidget类 5.QTreeWidget和QTreeWidgetltem类 表格与树解决的问题 ...

  8. 【Pandas库】(3) DataFrame的创建方法及基本操作

    各位同学好,今天给大家介绍一下Pandas库中DataFrame类型数据的创建方法和基本操作. 文章内容如下: (1)使用字典类创建. 字典类有:①数组.列表.元组构成的字典:②Series构造的字典 ...

  9. 【MySQL】缩略语PK NN UQ BIN UN ZF AI G、基本操作语句

    一.缩略语 PK:primary key 主键 NN:not null 非空 UQ:unique 唯一索引 BIN:binary 二进制数据 UN:unsigned 无符号整数(非负数) ZF:zer ...

最新文章

  1. repeater实现删除按钮
  2. nginx服务器access_log日志分析及配置详解
  3. 【深度学习】眼底图像的视杯和视盘分割解析
  4. Java Spring Boot VS .NetCore (七) 配置文件
  5. Ubuntu编译安装VASP
  6. 【分割模型解读】感受野与分辨率的控制术—空洞卷积
  7. hdu 2069 Coin Change(改)-dp
  8. java中true转换为int_在Java中将字节转换为int的最优雅的方式
  9. tp5 html获取get,tp5获取请求参数
  10. 【ffmpeg】基本使用方法总结
  11. 重温数据结构与算法(1) 构建自己的时间测试类
  12. 60 秒短信验证背后的危险
  13. sqlServer2012安装包下载
  14. 360优化开机速度后慢了_电脑开机速度慢的原因及解决方法
  15. GoLang之map底层系列二(浅显学习)
  16. Android WebRtc 桌面投屏、视频源码
  17. 【英语四六级-必背单词】高中英语单词(C - 2)MP3试听与下载
  18. 网站建设(3)——CDN及CDN加速原理
  19. (原)让win8开机自动进行宽带连接
  20. java银行管理系统-文件版

热门文章

  1. liunx常用命令笔记
  2. fibonacci数列的题目——剑指Offer
  3. 局域网 两台电脑共享 密码关闭
  4. uva 10026 Shoemaker's Problem(排序)
  5. 推荐12款非常有用的流行 jQuery 插件
  6. 学成在线--2.CMS前端页面查询开发
  7. java 栈 先进后出_数据结构: 先进后出——堆栈
  8. jquery ztree 设置勾选_047 JAVA-jQuery
  9. nonlocal和global关键字
  10. 【机器学习】feature_importances_ 参数源码解析