首页 > 学院 > 开发设计 > 正文

QTreeWidget

2019-11-08 03:24:03
字体:
来源:转载
供稿:网友

方法封装和connect(ui.treeWidget, SIGNAL(itemChanged(QTreeWidgetItem*, int)), this, SLOT(treeItemChanged(QTreeWidgetItem*, int)));

void  initQTreeWidgetItem(QTreeWidgetItem *item, QString str, Qt::ItemFlags flags = Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable, Qt::CheckState state = Qt::Unchecked, int column = 0){	item->setText(column, str);	item->setFlags(flags);	item->setCheckState(column, state);}void updateChildItem(QTreeWidgetItem *item, int column, Qt::CheckState state){	int count = item->childCount();	if (count > 0)	{		for (int i = 0; i < count; i++)		{			//判断是否有孩子当bb,如果当bb就递归。			auto childitem = item->child(i);			if (childitem!=nullptr)			{				updateChildItem(childitem, column, state);			}			item->child(i)->setCheckState(column, state);		}	}			}void updateParentItem(QTreeWidgetItem *item, int column, Qt::CheckState state){		QTreeWidgetItem *parent = item->parent();	QTreeWidgetItem *yeye(nullptr);	if (parent == nullptr)	{		return;	}	int selectedCount = 0;	int partCount = 0;	int chiildCount = parent->childCount();	for (int i = 0; i < chiildCount; i++)	{		QTreeWidgetItem *childItem = parent->child(i);		if (childItem->checkState(column) == Qt::Checked  )		{			selectedCount++;		}		if (childItem->checkState(column) == Qt::PartiallyChecked)		{			partCount++;		}	}	if (selectedCount <= 0 && partCount<=0)	{		parent->setCheckState(column, Qt::Unchecked);	}	else if (selectedCount > 0 && selectedCount < chiildCount)	{		parent->setCheckState(column, Qt::PartiallyChecked);		yeye = parent->parent();		while (yeye!=nullptr)		{			yeye->setCheckState(column, Qt::PartiallyChecked);			yeye = yeye->parent();		}	}	else if (selectedCount == chiildCount)	{		parent->setCheckState(column, Qt::Checked);	}}void treeItemChanged(QTreeWidgetItem *item, int column){	if (Qt::Checked == item->checkState(column))	{		updateChildItem(item, column, Qt::Checked);		updateParentItem(item, column, Qt::Checked);	}	else if (Qt::Unchecked == item->checkState(column))	{		updateChildItem(item, column, Qt::Unchecked);		updateParentItem(item, column, Qt::Unchecked);	}}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表