Qt4 如何从QTreeWidget中删除选中的项目?

Qt4 如何从QTreeWidget中删除选中的项目?,qt4,qtreewidget,qtreewidgetitem,Qt4,Qtreewidget,Qtreewidgetitem,我有一个带有复选框的QTreeWidget项目列表,这些项目是具有少数顶级项目的子项目。我想删除处于选中状态的项目,如何迭代qtreewidget并删除这些项目?简单。未编译,但希望您能理解 for(int topnum = 0; topnum < treeWidget->topLevelItemCount(); ++topnum) { if(Qt::Checked == treeWidget->topLevelItem(topnum)->checkState(0

我有一个带有复选框的QTreeWidget项目列表,这些项目是具有少数顶级项目的子项目。我想删除处于选中状态的项目,如何迭代qtreewidget并删除这些项目?

简单。未编译,但希望您能理解

for(int topnum = 0; topnum < treeWidget->topLevelItemCount(); ++topnum)
{
    if(Qt::Checked == treeWidget->topLevelItem(topnum)->checkState(0))  //assume one column
    {
        delete treeWidget->takeTopLevelItem(topnum);
        --topnum;                       //decrement because you just removed it
    } else
    {
        QTreeWidgetItem* topitem = treeWidget->topLevelItem(topnum);
        for(int childnum = 0; childnum < topitem->childCount(); ++childnum)
        {
            if(Qt::Checked == topitem->child(childnum)->checkState())
            {
                delete topitem->takeChild(childnum);
                --childnum;
            }
        }
    }
}
for(int-topnum=0;topnumtopLevelItemCount();++topnum)
{
if(Qt::Checked==treeWidget->topLevelItem(topnum)->checkState(0))//假设一列
{
删除treeWidget->takeTopLevelItem(topnum);
--topnum;//减量,因为您刚刚删除了它
}否则
{
QTreeWidgetItem*topitem=treeWidget->topLevelItem(topnum);
对于(int childnum=0;childnumchildCount();++childnum)
{
如果(Qt::Checked==topitem->child(childnum)->checkState())
{
删除topitem->takeChild(childnum);
--childnum;
}
}
}
}
我不知道是否检查了顶层项目或是否检查了子项,所以我检查了(哈哈)