Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Igors от Июнь 17, 2015, 07:41



Название: Перетасовка строк в таблице
Отправлено: Igors от Июнь 17, 2015, 07:41
Добрый день

Есть QTableWidget, режим выбора = строка. Пользователь хочет переставлять строки в таблице с помощью DnD. Никаких действий вне таблицы не планируется. Проблемы

1) Не видно как добиться этого просто опциями. По смыслу подходит InternalMove, но выходит он именно "move", т.е. затирает ячейки назначения и оставляет пустыми источники. Наверное я чего-то не понял, зачем сделано так неразумно/неудобно (совсем не в стиле Qt)  ???

2) Имедж драга - тупая копия выбранных, даже без альфы. Получается здоровая бандура за которой не видно куда вставлять

Решать это велосипедом или как?

Спасибо


Название: Re: Перетасовка строк в таблице
Отправлено: Old от Июнь 17, 2015, 07:53
http://stackoverflow.com/questions/26227885/drag-and-drop-rows-within-qtablewidget


Название: Re: Перетасовка строк в таблице
Отправлено: Igors от Июнь 18, 2015, 14:47
Ну вот, всякий раз когда хочу отдохнуть (пожрать готовых классов) - ничего не выходит  :'(
Ладно, в аттаче велосипед, пинаем, позорим что чего-то не читал и.т.п.

- чтобы отменить начатый драг - мышу влево или вправо от таблицы, и отпустить
- можно  наезжать на вертикальный скроллер во время драга
Ну остальное вроде интуитивно



Название: Re: Перетасовка строк в таблице
Отправлено: GreatSnake от Июль 03, 2015, 13:02
Судя по коду в QTableWidget::dropEvent() откровенные косяки, поэтому заявленный функционал и не работает.
Причём в последнем 5.5 никто их не исправил.
В QTreeWidget это работает.
Может нужно было задействовать его, а не изобретать велосипед?


Название: Re: Перетасовка строк в таблице
Отправлено: Авварон от Июль 03, 2015, 15:34
qstandarditemmodel ?


Название: Re: Перетасовка строк в таблице
Отправлено: GreatSnake от Июль 03, 2015, 15:41
qstandarditemmodel ?
Хм, не понял.
Причём здесь вообще QStandardItemModel, коли речь про виджеты со своей встроенной моделью?


Название: Re: Перетасовка строк в таблице
Отправлено: Авварон от Июль 03, 2015, 19:41
В ней есть днд, судя по оверлоадам, АПИ похоже на АПИ виджетов, можно ей воспользоваться.
Виджеты какбы совсем кастрированные.


Название: Re: Перетасовка строк в таблице
Отправлено: Igors от Июль 04, 2015, 06:51
В QTreeWidget это работает.
Может нужно было задействовать его, а не изобретать велосипед?
Соскочить на др базовый класс - это "workaround", а не нормальное, полноценное решение.

В QTreeWidget это работает.
Там (QTreeWidget) "как-то вставляет", но так ужасно что тоже пришлось писать свое  :)

В ней есть днд, судя по оверлоадам, АПИ похоже на АПИ виджетов, можно ей воспользоваться.
Виджеты какбы совсем кастрированные.
Не вижу ничего такого в QStandardItemModel