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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Номер перемещенной строки при Drag and Drop в QAbstractTableModel  (Прочитано 5040 раз)
YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« : Май 16, 2016, 13:55 »

Здравствуйте)
Я хочу сделать, чтобы при перемещении строки с помощью Drag and Drop в QAbstractTableModel изменялся список, на котором основывается модель, в соответствии с изменением модели. Для этого мне необходимо знать, какая была перемещена (в какую строку перемещена можно узнать при помощи функции dropMimeData).
Можете подсказать, как определить позицию, из которой перетащили строку?
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #1 : Май 16, 2016, 18:16 »

Через ф-ю mimeData запихнуть номера перемещаемых строк в QMimeData, а в dropMimeData вытащить их оттуда и анализировать как Вы хотите.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Май 17, 2016, 10:33 »

Я хочу сделать, чтобы при перемещении строки с помощью Drag and Drop в QAbstractTableModel изменялся список, на котором основывается модель, в соответствии с изменением модели.
А разве сейчас модель не обновляется?

Через ф-ю mimeData запихнуть номера перемещаемых строк в QMimeData, а в dropMimeData вытащить их оттуда и анализировать как Вы хотите.
Так теряется весь сервис Qt, у них mime заточено на DnD между приложениями

А вообще я так и не смог добиться разумного перемещения, см здесь
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #3 : Май 17, 2016, 19:11 »

Цитировать
Так теряется весь сервис Qt, у них mime заточено на DnD между приложениями
Заявление громкое, но врят ли столь актуальное. В приложении может не быть обмена данными с другим приложением, или обмена данными конкретно из этой модели. Не вижу причин, чтобы не использовать QMimeData  в данном случае как возможность передать пользовательские данные. Кроме того у Qt достаточно кривых мест, если что-то было придумано не совсем для этого, это врят ли повод не использовать это совсем.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Май 17, 2016, 23:45 »

можно попробовать перекрыть QAbstractItemView::startDrag() и там получить индекс строки
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Май 18, 2016, 09:26 »

Цитировать
Так теряется весь сервис Qt, у них mime заточено на DnD между приложениями
Заявление громкое, но врят ли столь актуальное.
Улыбающийся Что же тут "громкого"? Это довольно очевидный факт который легко проверить/

можно попробовать перекрыть QAbstractItemView::startDrag() и там получить индекс строки
Что обычно сводится к запоминанию selection. В этом нет ничего плохого, но тогда проще реализовать это самому, без DnD.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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