Russian Qt Forum
Май 02, 2024, 12:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTreeView добавление/перемещение элементов  (Прочитано 5848 раз)
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()??
« Последнее редактирование: Июнь 28, 2011, 15:58 от RomiX » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3258


Просмотр профиля
« Ответ #1 : Июнь 28, 2011, 17:25 »

beginMoveRows()/endMoveRows()
Записан
RomiX
Гость
« Ответ #2 : Июнь 28, 2011, 18:15 »

чёто не хочет работать
вызываю так:
beginMoveRows(index, index.row(), index.row(), index.parent(), rowCount(index.parent()))
endMoveRows();

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

и ничего не происходит...
Записан
RomiX
Гость
« Ответ #3 : Июнь 28, 2011, 18:28 »

а всё понял! надо было вот это оставить:
node->parent = grandParentNode;
grandParentNode->childrens.push_back(node);
parentNode->childrens.removeOne(node);
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 23.