右键菜单控制节点显隐的QTreeWidget功能实现

16 篇文章 0 订阅
本文介绍了如何使用Qt框架实现在树形视图中通过右键点击操作,动态控制节点的显示与隐藏,并利用递归算法确保子节点跟随父节点状态。同时,文章提及了多选功能的实现。核心代码展示了如何改变节点的文字颜色来标识显示和隐藏状态。
摘要由CSDN通过智能技术生成

实现功能

右键点击弹出带有显示和隐藏两个action的菜单。其中,显示、隐藏action用字体颜色表示,显示时为黑色,隐藏时为lightGray。如果是父节点显示或隐藏,其下的子节点也会跟着显示或隐藏,这个功能主要靠递归函数实现,有些暴力,还有待改善算法实现。Plus,多选也是支持滴。

实现节点显隐的主要代码

void QtWidgetsApplication3::showItem(QTreeWidgetItem* item)
{
	int count = item->childCount();
	if (count == 0)//没有子节点
	{
		item->setTextColor(0, Qt::black);
		return;
	}

	for (int i = 0; i < count; i++)
	{
		QTreeWidgetItem* childItem = item->child(i);
		showItem(childItem);
	}
	item->setTextColor(0, Qt::black);//显示自己
}

void QtWidgetsApplication3::hideItem(QTreeWidgetItem* item)
{
	int count = item->childCount();
	if (count == 0)//没有子节点
	{
		item->setTextColor(0, Qt::lightGray);
	}
	else {
		for (int i = 0; i < count; i++)
		{
			QTreeWidgetItem* childItem = item->child(i);
			hideItem(childItem);
		}
	}	
	item->setTextColor(0, Qt::lightGray);//隐藏自己
}

完整代码
Github仓库链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值