Удалить все подэлементы элемента в QTreeView

У меня есть QTreeView с элементом baseItem, который сам содержит несколько дочерних элементов:

baseItem
  - child1
  - child2
  - child3

Теперь я хочу удалить все дочерние элементы этого элемента, но не сам элемент. Мой текущий подход заключается в вызове

if (baseItem->hasChildren())
    baseItem->removeRows(rowCnt,baseItem->rowCount());

...где rowCnt — номер индекса строки, в которой находится baseItem. К сожалению, это работает только тогда, когда baseItem имеет значение rowCnt=0. Что здесь может быть не так? Как еще мне удалить всех дочерних элементов baseItem?

Спасибо!


person Elmi    schedule 12.04.2016    source источник
comment
Возможный дубликат Как удалить все строки и дочерние строки из QTreeview   -  person IAmInPLS    schedule 12.04.2016
comment
Алексис П.: нет, в этой теме описывается, как очистить все дерево целиком, я хочу удалить только дочерние элементы определенного элемента в дереве, в то время как этот элемент и все остальные остаются в живых.   -  person Elmi    schedule 12.04.2016
comment
Делает ли baseItem-›parent()-›removeRows(baseItem-›row(),baseItem-›rowCount()); работай? не могу протестировать...   -  person A.Fagrell    schedule 12.04.2016


Ответы (1)


...где rowCnt — номер индекса строки, в которой находится baseItem.

Нет, rowCnt — это индекс в поддереве под родителем. Так:

if (baseItem->hasChildren())
    baseItem->removeRows(0,baseItem->rowCount());
person Ilya    schedule 12.04.2016