Ich versuche, Drag'n'Drop für eine QGraphicsScene
zu implementieren. Hier sind die Ereignisse, die ich überlastet haben:Akzeptieren von Tropfen auf einer 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());
}
Die Szene nach wie vor wird nicht accept drops. Ich vermute, das ist, weil ich setAcceptDrops(true)
auf meinem QGraphicsScene
nicht tun kann.
Wie akzeptiere ich Tropfen in einer Grafikszene?
Wenn Sie die Tropfen in '' dragEnterEvent() 'akzeptieren' dann genug, es ist nur außer Kraft zu setzen '' dragMoveEvent() '' mit einer leeren Funktion, so wie um das Standardverhalten von QGraphicsScene zu vermeiden. – jcoffland