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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перетасовка строк в таблице  (Прочитано 5803 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Июнь 17, 2015, 07:41 »

Добрый день

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

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

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

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

Спасибо
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Июнь 17, 2015, 07:53 »

http://stackoverflow.com/questions/26227885/drag-and-drop-rows-within-qtablewidget
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Июнь 18, 2015, 14:47 »

Ну вот, всякий раз когда хочу отдохнуть (пожрать готовых классов) - ничего не выходит  Плачущий
Ладно, в аттаче велосипед, пинаем, позорим что чего-то не читал и.т.п.

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

« Последнее редактирование: Июнь 18, 2015, 15:27 от Igors » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Июль 03, 2015, 13:02 »

Судя по коду в QTableWidget::dropEvent() откровенные косяки, поэтому заявленный функционал и не работает.
Причём в последнем 5.5 никто их не исправил.
В QTreeWidget это работает.
Может нужно было задействовать его, а не изобретать велосипед?
Записан

Qt 5.11/4.8.7 (X11/Win)
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #4 : Июль 03, 2015, 15:34 »

qstandarditemmodel ?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Июль 03, 2015, 15:41 »

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

Qt 5.11/4.8.7 (X11/Win)
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #6 : Июль 03, 2015, 19:41 »

В ней есть днд, судя по оверлоадам, АПИ похоже на АПИ виджетов, можно ей воспользоваться.
Виджеты какбы совсем кастрированные.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Июль 04, 2015, 06:51 »

В QTreeWidget это работает.
Может нужно было задействовать его, а не изобретать велосипед?
Соскочить на др базовый класс - это "workaround", а не нормальное, полноценное решение.

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

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


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