在不同的QGraphicsView之间拖放

Drag and Drop between different QGraphicsView's

本文关键字:之间 拖放 QGraphicsView      更新时间:2023-10-16

我有一个QMainWindow与两个QGraphicsView的每个拥有一个QGraphicsScene。这两个视图(在屏幕上)不断显示。我希望能够拖放对象(从QGraphicsItem子类化的类的对象)从一个QGraphicsView到另一个。最好的方法是什么?

ps:我可以拖放一个QGraphicsView

在视图的鼠标事件中创建一个新的拖动对象来包含想要移动的数据,例如:

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;

然后在QGraphicsScene的dropEvent()中实现该数据的捕获