LINUX.ORG.RU

Как реализовать перетаскивание элементов на Qt?

 , ,


0

1

Что-то я не догоняю. Как сделать элемент, который можно будет перетаскивать, куда нужно? То есть, имеется набор элементов(по типу QGraphicsItem). Можно взять любой и перетащить в какое-то пространство(например в другой обьект QGraphicsView). И я не могу понять, как реализовать подобное. Использовать события DragAndDrop не хочется, так как они здесь явно будут костылем, ведь они предназначены для взаимодействия с ОС. Из чего возникло два вопроса:

  1. Уместен ли здесь QGraphicsView и QGraphicsItem?
  2. Куда копать, чтобы это сделать?
★★☆

Почему DnD неуместен? Допустим, запущено два экземпляра приложения и пользователю нужно перетащить из одного в другое, это как раз для DnD. А перетаскивание между сценами внутри приложения это просто частный случай.

Negorro
()

Использовать события DragAndDrop не хочется, так как они здесь явно будут костылем, ведь они предназначены для взаимодействия с ОС.

Здесь твоя ошибка.

https://doc.qt.io/qt-6/qtwidgets-graphicsview-dragdroprobot-example.html

Официальные примеры используют именно Drag-And-Drop события в контексте использования QGraphicsView.

EXL ★★★★★
()
Ответ на: комментарий от Werenter

Этот пример я видел. Просто интересно, есть ли другой способ.

Да, можно сидеть и целый день писать костыль который детектит Drag-and-Drop события в обработчиках QMousePressEvent, QMouseReleseEvent, QMouseMoveEvent, получив на выходе хреново работающий велосипед.

EXL ★★★★★
()
Ответ на: комментарий от Werenter

А зачем другой? То что ты хочешь называется DnD. Я через него делал перетаскивание ячеек в таблице в рамках одного приложения. Не понимаю почему ты воспринимаешь DnD как только взаимодействие с ситемой.

ox55ff ★★★★★
()