crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Перемещение элементов в QTreeWidget или QTreeView
Гость_Михаил_*
сообщение 3.4.2008, 8:46
Сообщение #1





Гости








    


Как такое реализиовать?
И нужно ли для этого использовать модель представлние?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rich
  опции профиля:
сообщение 5.4.2008, 11:54
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 123
Регистрация: 1.3.2008
Пользователь №: 109

Спасибо сказали: 6 раз(а)




Репутация:   0  


перемещение по одному уровню дерева?т.е в верх и низ?если да,то от чего зависит их номер по порядку?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.4.2008, 12:25
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9666
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


для QTreeView, это только через модель, а для QTreeWidget даже незнаю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rich
  опции профиля:
сообщение 5.4.2008, 13:29
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 123
Регистрация: 1.3.2008
Пользователь №: 109

Спасибо сказали: 6 раз(а)




Репутация:   0  


если дерево из базы берётся и номер по порядку itema в дереве это номер по порядку у родителя в базе, то перемещение достигается сменой номеров по порядку в базе и вызовом функции построения дерева.Соответственно елсе в низ,то текущего с нижестоящим и елсе в верх, то текущего с вышестоящим.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Александр_*
сообщение 21.1.2011, 15:51
Сообщение #5





Гости








    


Как-то так

QTreeWidgetItem *curr = treeWidget->currentItem();
if (0 == curr) return;

QTreeWidgetItem *above;

QTreeWidgetItem *parent = curr->parent();

if (0 == parent)
{
int indx = treeWidget->indexOfTopLevelItem(curr);
if (indx > 0)
{
above = treeWidget->takeTopLevelItem(indx - 1);
treeWidget->insertTopLevelItem(indx, above);
}
return;
}

int indx = parent->indexOfChild(curr);
if (indx > 0)
{
above = parent->takeChild(indx - 1);
parent->insertChild(indx, above);
}
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.4.2021, 1:45