在不同的 QGraphicsView 之间拖放

发布于 2024-12-24 17:26:30 字数 220 浏览 1 评论 0原文

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

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

I have a QMainWindow with two QGraphicsView's each owning a QGraphicsScene. Both views are displayed (on screen) constantly. I would like to be able to drag and drop objects (objects of a class subclassed from QGraphicsItem) from one QGraphicsView to the other. What's the best way to do this?

ps: I can drag and drop inside one QGraphicsView

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏见 2024-12-31 17:26:30

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

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

In the views mouse event create a new drag object to contain the data you want moved, for example:

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;

And then in the QGraphicsScene's dropEvent() implement the catch for that data.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文