查看完整版本: [-- qtreeview怎么遍历删除所有子节点 --]

QTCN开发网 -> Qt基础编程 -> qtreeview怎么遍历删除所有子节点 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

浪迹江湖 2021-03-26 12:23

qtreeview怎么遍历删除所有子节点

我想删除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 2021-03-26 17:22
如果你用的是 QTreeWidget,那只需 clear() 就行了。

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

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



查看完整版本: [-- qtreeview怎么遍历删除所有子节点 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled