实现功能
右键点击弹出带有显示和隐藏两个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仓库链接