Перетаскивание между различными QGraphicsView - PullRequest
2 голосов
/ 04 января 2012

У меня есть QMainWindow с двумя QGraphicsView, каждый из которых имеет QGraphicsScene.Оба представления отображаются (на экране) постоянно.Я хотел бы иметь возможность перетаскивать объекты (объекты класса, вложенные в класс QGraphicsItem) из одного QGraphicsView в другой.Какой лучший способ сделать это?

ps: я могу перетаскивать внутри одного QGraphicsView

1 Ответ

2 голосов
/ 10 января 2012

В событии мыши представлений создайте новый объект перетаскивания, который будет содержать данные, которые вы хотите переместить, например:

QDrag* drag = new QDrag( this );
QByteArray ba;
QDataStream* data = new QDataStream(&ba, QIODevice::WriteOnly);
*data << m_slideIndex;
QMimeData* myMimeData = new QMimeData;
    myMimeData->setData("application/x-thumbnaildatastream", ba);
drag->setMimeData( myMimeData );
drag->setPixmap( thumb );
drag->setHotSpot( thumb.rect().center() );
if ( drag->exec() == Qt::IgnoreAction )
{
    qDebug() << "DRAG CANCELLED";
    m_dragging = false;
}
drag->deleteLater();
delete data;

И затем в dropEvent () QGraphicsScene реализуйте перехват для этих данных.*

...