Sto provando a implementare drag'n'drop per un QGraphicsScene
. Ecco gli appuntamenti che ho sovraccaricato:Accettare gocce su una 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 scena ancora non lo faranno accept drops. Suppongo che sia perché non posso fare setAcceptDrops(true)
sul mio QGraphicsScene
.
Come si accettano gocce su una scena grafica?
Se si accetta il calo di '' dragEnterEvent() '' allora è sufficiente per eseguire l'override solo '' dragMoveEvent() '' con una funzione di vuoto, in modo da per evitare il comportamento predefinito di QGraphicsScene. – jcoffland