我有一个QMainWindow,其中两个QGraphicsView各自拥有一个QGraphicsScene。两个视图不断显示(在屏幕上)。我希望能够将对象(从QGraphicsItem子类化的类的对象)从一个QGraphicsView拖放到另一个QGraphicsView。最好的方法是什么?
ps:我可以拖放到一个QGraphicsView
中答案 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。