Страницы

Поиск по вопросам

пятница, 12 июля 2019 г.

Как удалить корневой элемент из QTreeView?

В слоте обрабатываю удаление элементов дерева. Все элементы удаляются, кроме последнего (корневого).
void TreeModel::slotDelete() { QStandardItem *curItem = itemFromIndex(_tvMainTree->currentIndex()); QStandardItem *curParent = itemFromIndex(_tvMainTree->currentIndex())->parent();
if(!curItem || !curParent) return;
curParent->removeRow(curItem->row()); }
Почему при попытке удалении последнего элемента curParent равен 0x0?
Уточнение: Дерево я строю, используя корневой элемент invisibleRootItem()
Подскажите, как удалить последний (корневой) элемент?


Ответ

Немного покопавшись в документации, я сам нашел решение.
void TreeModel::slotDelete() { QStandardItem *curItem = itemFromIndex(_tvMainTree->currentIndex()); if(!curItem) return;
QStandardItem *curParent = curItem->parent(); if(!curParent) { invisibleRootItem()->removeRow(curItem->row()); return; }
curParent->removeRow(curItem->row()); }

Комментариев нет:

Отправить комментарий