В слоте обрабатываю удаление элементов дерева. Все элементы удаляются, кроме последнего (корневого).
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());
}
Комментариев нет:
Отправить комментарий