Seite 1 von 1

Drag+Drop in QListView

Verfasst: 3. Januar 2014 12:35
von sigvdr
In einem Widget (von QListView abgeleitet) möchte ich per Drag+Drop
- Qt::CopyAction: den selektierten Inhalt kopieren, wenn der "Drop" in einem anderen Widget erfolgt.
- Qt::MoveAction: den selektierten Inhalt verschieben, wenn der "Drop" in dem selben Widget erfolgt.

Was mir dazu fehlt ist ein (allgemeinverbindliches) Unterscheidungsmerkmal.

Beispielcode:

Code: Alles auswählen

void QDragListView::mouseMoveEvent(QMouseEvent *event){
	// hier gibt es noch Vorbereitenden Code
   // ......
	QDrag *drag = new QDrag(this);
	QMimeData *mimeData = new QMimeData;
   mimeData->setText( liste() ); // liste() erzeugt den Inhalt "text/plain"
	drag->setMimeData(mimeData);

   Qt::DropAction action = drag->exec(Qt::CopyAction | Qt::MoveAction, Qt::CopyAction);
   QWidget *source = drag->source();
   QWidget *target = drag->target();
   if ( target == source ) {
		// hier ist target != source auch wenn der Drop im selben Widget erfolgt
		// und action == Qt::CopyAction	
	}
 }
Gruß Sig