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


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.