Как удалить отмеченные элементы из QTreeWidget?
У меня есть список элементов QTreeWidget с флажками, которые являются дочерними элементами с несколькими элементами верхнего уровня. Я хочу удалить элементы, которые находятся в проверенном состоянии, как я могу выполнить итерацию qtreewidget и удалить эти элементы?
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;
}
}
}
}
Не уверен, что понимаю, проверяются ли элементы верхнего уровня или проверяются дочерние элементы, поэтому я проверил (ха-ха) оба.