Russian Qt Forum

Qt => Model-View (MV) => Тема начата: YvenTitan от Май 16, 2016, 13:55



Название: Номер перемещенной строки при Drag and Drop в QAbstractTableModel
Отправлено: YvenTitan от Май 16, 2016, 13:55
Здравствуйте)
Я хочу сделать, чтобы при перемещении строки с помощью Drag and Drop в QAbstractTableModel изменялся список, на котором основывается модель, в соответствии с изменением модели. Для этого мне необходимо знать, какая была перемещена (в какую строку перемещена можно узнать при помощи функции dropMimeData).
Можете подсказать, как определить позицию, из которой перетащили строку?


Название: Re: Номер перемещенной строки при Drag and Drop в QAbstractTableModel
Отправлено: break от Май 16, 2016, 18:16
Через ф-ю mimeData запихнуть номера перемещаемых строк в QMimeData, а в dropMimeData вытащить их оттуда и анализировать как Вы хотите.


Название: Re: Номер перемещенной строки при Drag and Drop в QAbstractTableModel
Отправлено: Igors от Май 17, 2016, 10:33
Я хочу сделать, чтобы при перемещении строки с помощью Drag and Drop в QAbstractTableModel изменялся список, на котором основывается модель, в соответствии с изменением модели.
А разве сейчас модель не обновляется?

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

А вообще я так и не смог добиться разумного перемещения, см здесь (http://www.prog.org.ru/index.php?topic=29013.msg212713#msg212713)


Название: Re: Номер перемещенной строки при Drag and Drop в QAbstractTableModel
Отправлено: break от Май 17, 2016, 19:11
Цитировать
Так теряется весь сервис Qt, у них mime заточено на DnD между приложениями
Заявление громкое, но врят ли столь актуальное. В приложении может не быть обмена данными с другим приложением, или обмена данными конкретно из этой модели. Не вижу причин, чтобы не использовать QMimeData  в данном случае как возможность передать пользовательские данные. Кроме того у Qt достаточно кривых мест, если что-то было придумано не совсем для этого, это врят ли повод не использовать это совсем.


Название: Re: Номер перемещенной строки при Drag and Drop в QAbstractTableModel
Отправлено: kambala от Май 17, 2016, 23:45
можно попробовать перекрыть QAbstractItemView::startDrag() и там получить индекс строки


Название: Re: Номер перемещенной строки при Drag and Drop в QAbstractTableModel
Отправлено: Igors от Май 18, 2016, 09:26
Цитировать
Так теряется весь сервис Qt, у них mime заточено на DnD между приложениями
Заявление громкое, но врят ли столь актуальное.
:) Что же тут "громкого"? Это довольно очевидный факт который легко проверить/

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