Как удалить отмеченные элементы из 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;
            }
        }
    }
}

Не уверен, что понимаю, проверяются ли элементы верхнего уровня или проверяются дочерние элементы, поэтому я проверил (ха-ха) оба.

Другие вопросы по тегам