Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct
Drag & drop Graphics View
-
Доброго всем времени суток!
Разбираю стандартный пример из Qt dragdroprobot, вроде все понятно но возник вопрос как обмениваться цветами между двумя объектами а не только менять цвет у робота?
Пытался менять цвет в:
void RobotPart::dropEvent(QGraphicsSceneDragDropEvent *event) { dragOver = false; if (event->mimeData()->hasColor()) color = qvariant_cast<QColor>(event->mimeData()->colorData()); update(); }
но тут уже указатель объекта на котором отпускаешь круг с цветом.
Как получить указатель на перемещаемый объект(или как это правильно реализовать)?Спасибо.
-
@shadow said in drag & drop Graphics View:
dragdroprobot
Насколько я вижу, RobotPart имеет обрабатывает dragEnterEvent, dragLeaveEvent, dropEvent, тогда как ColorItem ничего этого не обрабатывает, а только создает QDrag с данными и выполняет его.
-
@Konstantin-Tokarev said in drag & drop Graphics View:
@shadow said in drag & drop Graphics View:
dragdroprobot
Насколько я вижу, RobotPart имеет обрабатывает dragEnterEvent, dragLeaveEvent, dropEvent, тогда как ColorItem ничего этого не обрабатывает, а только создает QDrag с данными и выполняет его.
Да так и есть, но если я определю dragEnterEvent, dragLeaveEvent, dropEvent, для ColorItem то при перетаскивании ColorItem(1) на другой ColorItem(2) поменяется цвет(например) в ColorItem(2) я же хочу чтобы и в ColorItem(1) тоже поменялся цвет:
ColorItem(1) <--> ColorItem(2)
-
Тогда эти объекты должны иметь друг на друга указатели. В drag event можно передавать команду что цвета надо имеено обменять, а не установить как в образце, или использовать это как единственное поведение
-
Можно конечно указатель в drag event запихать, но это некомильфо
-
@Konstantin-Tokarev said in drag & drop Graphics View:
Тогда эти объекты должны иметь друг на друга указатели. В drag event можно передавать команду что цвета надо имеено обменять, а не установить как в образце, или использовать это как единственное поведение
В drag event можно передавать команду что цвета надо имеено обменять, а не установить как в образце - и как это сделать?
-
Как угодно, хоть json туда затолкать. Готового протокола нет никакого
-
Любое содержимое QMimeData может интерпретироваться принимающей стороной как угодно
-
@Konstantin-Tokarev said in Drag & drop Graphics View:
Любое содержимое QMimeData может интерпретироваться принимающей стороной как угодно
Но поведение мне надо менять и у отправляющей стороны!?
-
@shadow Конечно
-
Решил задачу: Макс Шлее стр. 484