封装了两个QTreeWidget添加节点的功能函数,里面包含了节点的常用属性,如setData,type,setToolTip,setExpanded,setFlags等,比较通过特此记录。
一,给treeWidget添加根节点
/**
* @brief MainWindow::AddTreeRoot 给treeWidget添加根节点
* @param itemName 节点名
* @param data 节点携带数据内容
* @param treeWidget 指针
* @param ItemType 用户自己指定节点类型
* @return 返回添加的新根节点指针
*/
QTreeWidgetItem* MainWindow::AddTreeRoot(QString itemName,QString data, QTreeWidget* treeWidget,int ItemType)
{
if(!treeWidget) return nullptr;
//有同级同名节点就返回该节点
for (int i=0;i<treeWidget->topLevelItemCount();i++)
{
QTreeWidgetItem *item=treeWidget->topLevelItem(i);
if(item->text(0)==itemName) return item;
}
//没有就创建
QTreeWidgetItem* item=new QTreeWidgetItem(treeWidget,ItemType);
item->setText(0,itemName);
// item->setTextColor(0, QColor(85,0,127));//设置字体颜色
item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsAutoTristate);
item->setData(0,Qt::UserRole,data);
//item->setCheckState(0,Qt::Unchecked);
item->setToolTip(0,data);
item->setExpanded( true);
treeWidget->addTopLevelItem(item);//添加顶层节点
return item;
}
二,给一个父节点QTreeWidgetItem添加子节点
/**
* @brief MainWindow::addChildItem 给一个父节点QTreeWidgetItem添加子节点
* @param parentItem 父节点
* @param itemName 子节点名
* @param data 子节点携带数据值
* @param ItemType 子节点类型
* @return 返回添加的新节点指针
*/
QTreeWidgetItem* MainWindow::addChildItem(QTreeWidgetItem* parentItem,QString itemName,QString data,int ItemType)
{
if(!parentItem)return nullptr ;
//有就返回
for (int i=0;i<parentItem->childCount();i++)
{
QTreeWidgetItem *item=parentItem->child(i);
if(item->text(0)==itemName)
{
return item;
}
}
//没有就创建
QTreeWidgetItem * childItem=new QTreeWidgetItem(ItemType);
childItem->setText(0,itemName);
childItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsAutoTristate);
childItem->setData(0,Qt::UserRole,data);
childItem->setToolTip(0,data);
childItem->setExpanded( true);//默认节点展开
parentItem->addChild(childItem);
return childItem;
}