J'essaye d'implémenter drag'n'drop pour un QGraphicsScene
. Voici les événements que j'ai surchargée:Accepter des gouttes sur un 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());
}
La scène ne sera pas encore accept drops. Je suppose que c'est parce que je ne peux pas faire setAcceptDrops(true)
sur mon QGraphicsScene
. Comment accepter les chutes sur une scène graphique?
Si vous acceptez la baisse de '' dragEnterEvent() '' il suffit de remplacer juste '' dragMoveEvent() '' une fonction vide, de façon pour éviter le comportement par défaut de QGraphicsScene. – jcoffland