在不同的QGraphicsView之间拖放

时间:2012-01-04 16:15:33

标签: c++ qt drag-and-drop qgraphicsview qgraphicsscene

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

ps:我可以拖放到一个QGraphicsView

1 个答案:

答案 0 :(得分:2)

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

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()中实现该数据的catch。