in einem abgeleiteten QTreeView soll ein internes Verschieben der Elemente möglich sein.
Nach dem Drop muss das Verschieben jedoch in Abhängigkeit vom Inhalt durch den Anwender bestätigt werden. Dazu akzeptiere ich im dragMoveEvent() der View eine MoveAction, und öffne in der Methode dropMimeData() des zugehörigen Modells einen Dialog, mit dem die Entscheidung getroffen wird:
View-Klasse (Derivat von QTreeView):
Code: Alles auswählen
...
def dragMoveEvent (self, event):
if event.source() == self:
event.setDropAction(Qt.MoveAction)
event.accept()
...
Code: Alles auswählen
def dropMimeData (self, data, action, row, column, parent_index)
...
if not requestUserConfirmation(data):
return False
...
Nun das Problem:
Bricht der Anwender das Verschieben per Dialog ab, löscht Qt dennoch das ursprüngliche Element aufgrund der MoveAction. Verwende ich stattdessen eine CopyAction, habe ich keine Ahnung, wie ich innerhalb von dropMimeData() das ursprüngliche Element löschen soll, falls der Benutzer das Verschieben bestätigt.
Hat jemand einen Rat für mich?
Gruß + vorab vielen Dank
OscarWild