2

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

ps:我可以在一个QGraphicsView里面拖拽

4

1 回答 1

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

于 2012-01-10T16:39:12.630 回答