• 2810阅读
  • 1回复

[提问]qtreeview怎么遍历删除所有子节点 [复制链接]

上一主题 下一主题
离线浪迹江湖
 

只看楼主 倒序阅读 楼主  发表于: 2021-03-26
我想删除qtreeview某个节点下的所有子节点,每一个节点用的是qstandarditem,方法如下,麻烦大侠帮我改进下,感谢!

void DirTreeView::deleteChildrenItems(QStandardItem *root_item)
{    
      Q_ASSERT(root_item);    
      if(root_item->hasChildren())  
     {      
          for(int i = 0;i < root_item->rowCount() ;i++)      
        {            
                  QStandardItem * childitem = root_item->child(i);          
                  if(!childitem->hasChildren())
                {                
                         root_item->removeRow(i);    //这条执行之后,子节点的rowCount数量就变了,i也没有意义了,所有这是错误  
                }   else
              {                
                  deleteChildrenItems(childitem);          
              }        
        }    
   }
}
在线20091001753

只看该作者 1楼 发表于: 2021-03-26
如果你用的是 QTreeWidget,那只需 clear() 就行了。

QTreeWidget = View 视图 + Model 模型 + Delegate 代理。

数据在模型里,并不在视图里,所以你无法在 QTreeView 里找到删除数据的功能。

(づ ̄ 3 ̄)づ
快速回复
限100 字节
 
上一个 下一个