Привет всем.
Вообщем делаю дерево, использую свою модель унаследованную от QAbstractItemModel для вывода дерева использую QTreeView.
Данные беру из таблици в БД, таблица имеет вид (id, parent_id, name).
В принципе всё работает номально но есть следующая проблемма:
Переопределил removeRows вот код
C++ (Qt)
bool SqlTreeModel::removeRows(int row, int count, const QModelIndex &parent)
{
ItemData *parentItem;
if(itemDataFromIndex(parent)->id == 0)
return false;
if (!parent.isValid())
return false;
else
parentItem = itemDataFromIndex(parent.parent());
if (row < 0 || row > parentItem->children.count())
return false;
beginRemoveRows(parent, row, row + count - 1);
for (int i = 0; i < count; ++i) {
if(!queryDelItem(parentItem->children[row]))
return false;
parentItem->children.removeAt(row);
}
endRemoveRows();
return true;
}
Вот пример дерева:
<all>
|
-----note1
| |
| n11
|
-----note2
| |
| n21
|
-----note3
|
n31
Если удалять note3 то всё идёт нормально, а вот если удалять note1 то все нижестоящие потомки сворачиваются, тоже при удалении note2, note1 без изменений а note3 сворачивается.
Кто нибуть с таким сталкивался, как сделать так чтоб вид дерева после удаления в нём записи не изменялся?