StatTreeCtrl унаследован от абстракттеммодел
Пропустим индексы, дата, парент...
во вьюшке видна XML.
В тыкаю на заголовок Xml жму удалить:
QModelIndex index = treeView->currentIndex();
StatisticItem* item = static_cast<StatisticItem*> (index.internalPointer());
QMessageBox::StandardButton reply;
reply = QMessageBox::question(this, Resource::CLOSE_DOCUMENT_TITLE, Resource::CLOSE_DOCUMENT,
QMessageBox::Yes | QMessageBox::No);
if (reply == QMessageBox::Yes)
{
_rootItem.removeChild(item);
}
void StatisticItem::removeChild(StatisticItem * item)
{
int index = m_childItems.indexOf(item);
if (index == -1)
return;
emit sg_Removed(item, index);
}
void StatTreeCtrl::sl_ItemRemoved(StatisticItem *item, int index)
{
removeRows(index, item->children().count() ,QModelIndex()); //children - vector<StatisticItem*>
}
bool StatTreeCtrl::removeRows(int row, int count, const QModelIndex& parent)
{
if (row < 0 || row + count > rowCount(parent) || count == 0)
return false;
StatisticItem* item = static_cast<StatisticItem*>(parent.internalPointer());
beginRemoveRows(parent, row, count + row - 1);
for (int i = 0; i < count; i++)
{
item->deleteChild(row);
}
endRemoveRows();
return true;
}
void StatisticItem::deleteChild(int row)
{
//m_childItems[row];
if (item)
delete item;
m_childItems.removeAt(row);
}
какая то лапша
StatisticItem::~StatisticItem()
{
qDeleteAll(m_childItems);
m_childItems.clear();
}
StatTreeCtrl::~StatTreeCtrl()
{
if (rootItem)
delete rootItem;
}