Как удалить все дочерние элементы корневого элемента в древовидном представлении - PullRequest
2 голосов
/ 27 октября 2019

Я хочу удалить все элементы дерева в древовидной структуре невидимого корневого элемента.

В настоящее время это мой рабочий процесс

QModelIndex index = treeView->rootIndex();
QAbstractItemModel *model = treeView->model();
TreeModel *myModel = qobject_cast<TreeModel*>(model);
TreeItem* itm = myModel->getItem(index);
itm->removeChildren(0, itm->childCount());


  bool TreeItem::removeChildren(int position, int count)
{
    if (position < 0 || position > childItems.count())
        return false;

    for (int row = 0; row < count; ++row)
    {
        delete childItems.takeAt(position);
    }

    return true;
}

Хотя я могу удалить всеэлементы в древовидном представлении выглядят так, как будто модельные индексы дерева не обновляются.

После удаления всех элементов дерева при попытке добавить новый элемент происходит сбой приложения.

1 Ответ

3 голосов
/ 27 октября 2019

Вам нужно удалить свои элементы между этими вызовами.

beginResetModel();

и

endResetModel()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...