QTreeWidget简单使用
来源:互联网 发布:c语言求最短路径 编辑:程序博客网 时间:2024/06/07 05:19
mytreetest.h文件
#ifndef MYTREETEST_H#define MYTREETEST_H#include <QWidget>#include<QTreeWidget>#include<QTreeWidgetItem>class MyTreeTest : public QWidget{ Q_OBJECTpublic: explicit MyTreeTest(QWidget *parent = 0); void init(); void updateParentItem(QTreeWidgetItem* item);signals:public slots: void treeItemChanged(QTreeWidgetItem* item, int column);private: QTreeWidget* m_treeWidget;};#endif // MYTREETEST_H
mytreetest.cpp文件
#include "mytreetest.h"#include <QDebug>MyTreeTest::MyTreeTest(QWidget *parent) : QWidget(parent){ m_treeWidget = new QTreeWidget(this); init(); connect(m_treeWidget,SIGNAL(itemChanged(QTreeWidgetItem*, int)), this, SLOT(treeItemChanged(QTreeWidgetItem*, int)));}void MyTreeTest::init(){ m_treeWidget->clear(); //第一个分组 QTreeWidgetItem *g1 = new QTreeWidgetItem(m_treeWidget); g1->setText(0, "g1"); g1->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt:: ItemIsSelectable); g1->setCheckState(0, Qt::Unchecked); QTreeWidgetItem *s11 = new QTreeWidgetItem(g1); s11->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt:: ItemIsSelectable); s11->setText(0, "s11"); s11->setCheckState(0, Qt::Unchecked); QTreeWidgetItem *s12 = new QTreeWidgetItem(g1); s12->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt:: ItemIsSelectable); s12->setText(0, "s12"); s12->setCheckState(0, Qt::Unchecked); //第二个分组 QTreeWidgetItem *g2 = new QTreeWidgetItem(m_treeWidget); g2->setText(0, "g2"); g2->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt:: ItemIsSelectable); g2->setCheckState(0, Qt::Unchecked); QTreeWidgetItem *s21 = new QTreeWidgetItem(g2); s21->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt:: ItemIsSelectable); s21->setText(0, "s21"); s21->setCheckState(0, Qt::Unchecked);}void MyTreeTest::updateParentItem(QTreeWidgetItem *item){ QTreeWidgetItem *parent = item->parent(); if (parent == NULL) { return; } int selectedCount = 0; int partiallyCount = 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 (childItem->checkState(0) == Qt::PartiallyChecked) { partiallyCount++; } } if (selectedCount <= 0) { //选中状态 parent->setCheckState(0, Qt::Unchecked); } else if (selectedCount > 0 && selectedCount < childCount) { //部分选中状态 parent->setCheckState(0, Qt::PartiallyChecked); } else if (selectedCount == childCount) { if(partiallyCount>0){ parent->setCheckState(0, Qt::PartiallyChecked); }else{ parent->setCheckState(0, Qt::Checked); } //未选中状态 }}void MyTreeTest::treeItemChanged(QTreeWidgetItem *item, int column){ QString itemText = item->text(0); qDebug() << "itemText=" << itemText; //选中时 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); } } else{ updateParentItem(item); }}
运行效果
阅读全文
0 0
- QTreeWidget的简单使用
- QTreeWidget的简单使用
- QTreeWidget的简单使用
- QTreeWidget的简单使用
- QTreeWidget的简单使用
- QTreeWidget的简单使用
- QTreeWidget的简单使用
- QTreeWidget的简单使用
- QTreeWidget的简单使用
- QTreeWidget的简单使用
- QTreeWidget简单使用
- Qt编程24:QTreeWidget简单使用
- QTreeWidget的简单用法
- QTreeWidget的简单用法
- QTreeWidget的简单用法
- QTreeWidget的简单用法
- QTreeWidget简单用法
- QTreeWidget的使用
- OBS (open boardcast server)结构分析
- 众人是如何看待婚前性行为、处女情结的?
- 阿里云ECS Spark安装
- Shell脚本工具
- 和铃声相关的内容(RingtoneManager)
- QTreeWidget简单使用
- 二叉树(1)
- iOS启动页倒计时跳过按钮
- 4. RxJava操作符与应用场景
- ORB-SLAM2详解(一)简介
- Python_001 hello world
- 每个人心中都有一个Hadoop生态圈
- 《剑指Offer》第一章
- 在Hbuilber中新建一个项目