接受 QGraphicsScene 上的拖放

10

我正在尝试为QGraphicsScene实现拖放功能。以下是我已经重载的事件:

void TargetScene::dragEnterEvent(QGraphicsSceneDragDropEvent *event) {
    bool acceptDrag = false;
    const QMimeData* mime = event->mimeData();

    // Is an image present?
    if (mime->hasImage()) {
        QImage img = qvariant_cast<QImage>(mime->imageData());
        dragPix = QPixmap::fromImage(img);
        acceptDrag = !dragPix.isNull();
    }

    event->setAccepted(acceptDrag);
}

void TargetScene::dropEvent(QGraphicsSceneDragDropEvent *event) {
    // Add dragged pixmap to scene
    QGraphicsPixmapItem* newPix = this->addPixmap(dragPix);
    newPix->setPos(event->pos().x(), event->pos().y());
}

场景仍然无法 接受拖放。我猜这是因为我不能在我的 QGraphicsScene 上执行 setAcceptDrops(true)。如何在图形场景中接受拖放?
1个回答

14

2
如果您接受在“dragEnterEvent()”中的拖放,则只需重写“dragMoveEvent()”并使用空函数即可避免QGraphicsScene的默认行为。 - jcoffland

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接