我有带有复选框的QTreeWidget项目列表,这些项目是顶级项目较少的子项目。我想删除处于已检查状态的项目,如何迭代qtreewidget并删除这些项目?
答案 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;
}
}
}
}
我不确定是否理解是否检查了顶级物品或是否检查了孩子,所以我检查了(哈哈)两者。