目录
一、右键菜单实现
//1、连接槽函数
connect(ui->treeWidget, &QTreeWidget::customContextMenuRequested, this, &LayerManagerWidget::onTreeWidgetItemContextMenu);
//2、自定义上下文菜单
ui->treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);
//3、实现槽函数
void LayerManagerWidget::onTreeWidgetItemContextMenu(const QPoint& pos)
{
QTreeWidgetItem* curItem = ui->treeWidget->itemAt(pos);
if (curItem == nullptr)
return;
QMenu* popMenu = new QMenu(this);
QAction* actDelete = new QAction(tr("删除"), popMenu);
connect(actDelete, &QAction::triggered, this, &LayerManagerWidget::onActionTriggeredDelete);
popMenu->addAction(actDelete);
popMenu->exec(QCursor::pos());
}
二、节点删除实现
//递归删除子节点
void LayerManagerWidget::removeItem(QTreeWidgetItem *item)
{
int count = item->childCount();
if(count == 0)
{
delete item;
return;
}
for(int i=0; i<count; i++)
{
QTreeWidgetItem *childItem = item->child(0);
removeItem(childItem);
}
delete item;
}