Russian Qt Forum

Qt => Model-View (MV) => Тема начата: RomiX от Июнь 28, 2011, 15:56



Название: QTreeView добавление/перемещение элементов
Отправлено: RomiX от Июнь 28, 2011, 15:56
привет всем. имеется QTreeView и модель на основе QAbstractItemModel, которая грузит данные из БД. Так-же создано несколько функций для перемещения элементов в родительский элемент и из него, удаления, добавления и т.д. Всё вообщем-то работает, только не совсем так как хотелось бы, например чтобы переместить элемент на уровень вверх:
node->parent = grandParentNode;
grandParentNode->childrens.push_back(node);
parentNode->childrens.removeOne(node);
view->reset();

node - вершина, содержит указатель на родительскую вершину и список потомков

Проблема в том что после этого QTreeView сворачивает все элементы, + это явно не самое лучшее решение, т.к. view заново проходиться по всем элементам.

Собственно как можно добавить / удалить элемент из представления или модели не вызывая reset()??


Название: Re: QTreeView добавление/перемещение элементов
Отправлено: Авварон от Июнь 28, 2011, 17:25
beginMoveRows()/endMoveRows()


Название: Re: QTreeView добавление/перемещение элементов
Отправлено: RomiX от Июнь 28, 2011, 18:15
чёто не хочет работать
вызываю так:
beginMoveRows(index, index.row(), index.row(), index.parent(), rowCount(index.parent()))
endMoveRows();

в index текущий индекс, parent валидный

и ничего не происходит...


Название: Re: QTreeView добавление/перемещение элементов
Отправлено: RomiX от Июнь 28, 2011, 18:28
а всё понял! надо было вот это оставить:
node->parent = grandParentNode;
grandParentNode->childrens.push_back(node);
parentNode->childrens.removeOne(node);