如何从QTreeWidget中删除已检查的项目?

时间:2013-04-07 10:45:51

标签: qt4 qtreewidget qtreewidgetitem

我有带有复选框的QTreeWidget项目列表,这些项目是顶级项目较少的子项目。我想删除处于已检查状态的项目,如何迭代qtreewidget并删除这些项目?

1 个答案:

答案 0 :(得分:1)

易。没有编译,但希望你能得到这个想法。

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;
            }
        }
    }
}

我不确定是否理解是否检查了顶级物品或是否检查了孩子,所以我检查了(哈哈)两者。