Hallo alle miteinander (:
Da ich neu hier bin erst einmal Danke für's freischalten! Vielleicht werde ich irgendwann auch mal in die Situation kommen hier jemandem zu helfen zu können (:
Es geht um folgendes Szenario:
Es gibt eine TreeView wo man recht viel mit Drag and Drop machen kann. Man kann von außen (also Programmextern) Dinge in den Baum reindraggen, allerdings auch innerhalb des Baumes einzelne Knoten verschieben. Auch das herausdraggen aus dem Baum in einen Explorer beispielsweise soll möglich sein. Prinzipiell funktioniert das alles auch so wie es soll, nur ein Problem habe ich noch:
Wenn ich innerhalb des Baumes irgendwelche Knoten verschiebe, möchte ich nicht jedes mal das Model neu setzten. Dies hat nämlich zur Folge, dass sich alle Knoten wieder einklappen und man ruck zuck die Übersicht verliert. Stattdessen sollen die Daten an der einen Stelle verschwinden und an anderer wieder auftauchen und alles andere so bleiben wie es gerade angezeigt wird.
Hierbei gibt es nun ein paar Schwierigkeiten.
um mit Funktionen wie "begin move rows" und "end move rows" arbeiten zu können brauch ich den ModelIndex des Vaters der Quellknoten. Wie allerdings soll ich da rankommen, wenn in meinen Mime Types lediglich der Pfad der entsprechenden Dateien steht? (text/uri-list). Also muss es doch irgendwie möglich sein beim Auslösen des Drag-Events im Baum irgendwie die Modelindizes - oder zumindest den VaterIndex - in das QMimeData reinzubekommen.. Und wenn ja, macht das überhaupt Sinn oder ist nicht eine andere Lösung viel eleganter?
Die einzige Möglichkeit die mir einfällt wäre folgende: In einem ModelMember ein Zeiger auf eine Liste der gedragten VaterIndizes zu speichern um dann beim droppen drauf zurückgreifen zu können. Diese Lösung scheint mir allerdings recht unelegant. Qt muss das dass doch besser können?
Was die Sache ein bissel erschwert, ist halt dass unterschieden werden muss ob eine Mime Type innerhalb des selben Baumes gedraggt wurde. Weil je nach dem anders verfahren wird.. Diesbezüglich schummel ich ein wenig und schreibe mit setText den Namen des Quell-Widgets direkt in das QMime rein...
hat irgendjemand vielleicht eine Idee oder einen Tip?
Danke schon mal im Voraus und ganz herzliche Grüße an alle,
Frime
QModelIndex beim draggen in QMimeData packen.Macht das Sinn?
Re: QModelIndex beim draggen in QMimeData packen.Macht das S
Du kriegst doch mit, dass in jenem Widget der Drag beginnt (mousePress + mouseMove ohne mouseRelease). Das kann man sich merken 
Wenn dann in deinem Widget etwas gedropped wird, kannst du schauen, ob hier auch der Drag gestartet wurde. Für die ausgewählten Indizes gibts dann das QAbstractItemView::selectionModel().
Wenn dann in deinem Widget etwas gedropped wird, kannst du schauen, ob hier auch der Drag gestartet wurde. Für die ausgewählten Indizes gibts dann das QAbstractItemView::selectionModel().