【问题标题】:Drag and Drop between different QGraphicsView's在不同的 QGraphicsView 之间拖放
【发布时间】:2012-02-02 13:02:09
【问题描述】:

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

ps:我可以在一个QGraphicsView中拖放

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-06-17
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多