一、 删除节点以及子节点
在删除时, currentItemChanged 一定要做判断, 不然删除最后一个会报错。
void MainWindow::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;//最后将自己删除
}
void MainWindow::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
{
Q_UNUSED(previous);
if(current == NULL)
return;
}
二、遍历节点
void MainWindow::on_toolButton_4_clicked()
{
int count = ui->treeWidget->topLevelItemCount(); // 获取第一级节点个数
for(int i = 0; i < count; i++)
{
QTreeWidgetItem* item = ui->treeWidget->topLevelItem(i);
traverseEachNode(item);
}
}
void MainWindow::traverseEachNode(QTreeWidgetItem *item)
{
int count

这篇博客介绍了在Qt环境中如何操作QTreeWidget,包括删除节点及其子节点的递归方法,以及遍历所有节点的实现。在删除操作中,强调了对当前选中项的判断以避免错误。同时,提供了遍历第一级节点及其所有子节点的代码示例。
745

被折叠的 条评论
为什么被折叠?



