qt QTreeWidget使用
itemwidget.h
#ifndef ITEMWIDGET_H
#define ITEMWIDGET_H #include <QtWidgets/QWidget>
#include <QTreeWidget>
#include "ui_itemwidget.h" class itemWidget : public QWidget
{
Q_OBJECT public:
itemWidget(QWidget *parent = 0);
void init();
void updateParentItem(QTreeWidgetItem* item);
~itemWidget(); private:
Ui::itemWidgetClass ui;
private slots:
void treeItemChanged(QTreeWidgetItem* item, int column);
}; #endif // ITEMWIDGET_H
itemwidget.cpp
#include "itemwidget.h" itemWidget::itemWidget(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
init();
connect(ui.treeWidget, SIGNAL(itemChanged(QTreeWidgetItem*, int)), this, SLOT(treeItemChanged(QTreeWidgetItem*, int)));
} itemWidget::~itemWidget()
{
;
} void itemWidget::init()
{
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); } void itemWidget::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 itemWidget::treeItemChanged(QTreeWidgetItem* item, int column)
{
if (Qt::Checked == item->checkState(0))
{
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);
}
}
}
qt QTreeWidget使用的更多相关文章
- Qt QTreeWidget 树形结构实现(转)
Qt中实现树形结构可以使用QTreeWidget类,也可以使用QTreeView类,QTreeWidget继承自QTreeView类.树形效果如下图所示: 这是怎么实现的呢?还有点击节点时会有相应的事 ...
- Qt QTreeWidget节点的添加+双击响应+删除详解(转)
QTreeWidget是实现树形结构的类,在很多软件中都可以看到类似树形结构的界面. 我做的一个示例如下图,用来处理图像,最顶层节点是图像的路径名,子节点是图像的各个波段,双击各个波段会显示图像各波段 ...
- Qt QTreeWidget节点的添加+双击响应+删除详解
转自: http://www.cnblogs.com/Romi/archive/2012/08/08/2628163.html 承接该文http://www.cnblogs.com/Romi/arch ...
- QTreeWidget 的用法
Qt QTreeWidget 新建一个Qt Widgets Application,拖拽一个Tree Widget 到 ui 界面上,最后实现的效果如下: 添加代码 //test.h //在头文件里添 ...
- qt model/view 架构基础介绍之QTreeWidget
# -*- coding: utf-8 -*- # python:2.x #说明:QTreeWidget用于展示树型结构,也就是层次结构同前面说的 QListWidget 类似,这个类需要同另外一个辅 ...
- Qt之QTreeWidget入门
QTreeWidget的一些基本操作 1.insertTopLevelItems,insertTopLevelItem用来添加顶层的item QTreeWidget *treeWidget = new ...
- Qt 学习之路 2(42):QListWidget、QTreeWidget 和 QTableWidget
Qt 学习之路 2(42):QListWidget.QTreeWidget 和 QTableWidget 豆子 2013年2月5日 Qt 学习之路 2 38条评论 上一章我们了解了 model/vie ...
- QT QDockWidget锚接部件 和 QTreeWidget 树形部件 构成树形选择项
1. 如图,在mainwindow中 添加DockWidget到右侧,里面镶嵌TreeWidget. 2. QTreeWidget *treeWidget = new QTreeWidget; // ...
- 第15.27节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QTreeWidget详解
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 树部件(Tree Widget)是Qt Designer中 Item Widgets(It ...
随机推荐
- 在C#中使用二叉树实时计算海量用户积分排名的实现
从何说起 前些天和朋友讨论一个问题,他们的应用有几十万会员然后对应有积分,现在想做积分排名的需求,问有没有什么好方案.这个问题也算常见,很多地方都能看到,常规做法一般是数据定时跑批把计算结果到中间表然 ...
- 7.netty内存管理-ByteBuf
ByteBuf ByteBuf是什么 ByteBuf重要API read.write.set.skipBytes mark和reset duplicate.slice.copy retain.rele ...
- (openssh、telnet、vsftpd、nfs、rsync、inotify、samba)
(openssh.telnet.vsftpd.nfs.rsync.inotify.samba) 一:OpenSSH服务与Telnet服务(必须掌握) 前言:OpenSSH是加密传输,Telnet是明文 ...
- 在EasyUI项目中使用FileBox控件实现文件上传处理
我在较早之前的随笔<基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用>Web框架介绍中介绍了基于Uploadify的文件上传操作,免费版本用的是J ...
- mysql-5.7.9-winx64遇坑记
昨天在mysql5.0上导入sql文件时,一直卡在一个地方报错,也没仔细分析,认为应该是mysql版本太低不支持这个语法而已.遂决心下载一个最新版本的mysql,却浑然不知前面无数的坑已经埋伏好了在等 ...
- 输入n个学生,并且输入成绩,判断是否偏科
H学校的领导主任决定分析一下今年所有N名学生的考试成绩,从中找出偏科的学生,考试成绩包含语文,数学,英语三门课程的分数,已知偏科的定义是:某一门课程的分数大于等于90,并且另外两门的分数小于等于70. ...
- 探究Dubbo的拓展机制: 下
承接上篇, 本篇博文的主题就是认认真真捋一捋, 看一下 Dubbo是如何实现他的IOC / AOP / 以及Dubbo SPI这个拓展点的 总览: 本篇的话总体上分成两部分进行展开 第一点就是 Dub ...
- 源码分析Kafka 消息拉取流程
目录 1.KafkaConsumer poll 详解 2.Fetcher 类详解 本节重点讨论 Kafka 的消息拉起流程. @(本节目录) 1.KafkaConsumer poll 详解 消息拉起主 ...
- css文字溢出显示省略号
1.单行文字溢出显示省略号. overflow: hidden; text-overflow: ellipsis; white-space: nowrap;//文本不换行 2.多行文本溢出显示省略号. ...
- mysql的查询优化
参考网站:http://www.liyblog.top/p/6 这里总结了52条对sql的查询优化,下面详细来看看,希望能帮助到你 1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 wh ...