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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [drag&drop] Куда бросили [решено]  (Прочитано 2759 раз)
Tonal
Гость
« : Декабрь 21, 2011, 10:07 »

Нужно в модели, в реализации dropMimeData (переопределение QAbstractItemModel::dropMimeData) узнать точное положение куда бросили - ровно на итем, под него или над ним.
В QAbstractItemView есть функция защищённая dropIndicatorPosition которая даёт эту инфу.
Есть ли какой-то красивый способ добратся до неё из модели?

Делаю тащи-бросай по Using Drag and Drop with Item Views
« Последнее редактирование: Декабрь 21, 2011, 11:39 от Tonal » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Декабрь 21, 2011, 11:24 »

Нужно в модели, в реализации dropMimeData (переопределение QAbstractItemModel::dropMimeData) узнать точное положение куда бросили - ровно на итем, под него или над ним.
Интересно, а зачем это вам знать, если об этом знает view?
Записан

Qt 5.11/4.8.7 (X11/Win)
Tonal
Гость
« Ответ #2 : Декабрь 21, 2011, 11:38 »

Предполагаются разные действия.
Вид у меня QTreeView.
Если бросили точно на ноду - происходит "слияние".
Если выше или ниже - притащенное вставляется братом в соответствующее место.

Ну да сам разобрался - параметры dropMimeData - int row, int column, QModelIndex index содержат полную информацию:
Если бросили точно на ноду - в row и column -1 а index - нода.
Если выше ноды - index - родитель ноды а row = нода.row.
Если ниже ноды - index - родитель ноды а row = нода.row + 1.
Ежели бросили мимо - index = root.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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