QTreeWidget (internalMove nur auf gleicher Ebene)

Alles rund um die Programmierung mit Qt
Antworten
Tom_Tom
Beiträge: 54
Registriert: 2. August 2008 18:39

QTreeWidget (internalMove nur auf gleicher Ebene)

Beitrag von Tom_Tom »

Hallo.
Ich habe volgende Frage:

QTreeWidget w;
w.setDragDropMode ( QAbstractItemView::InternalMove ) ;

Wie kann ich es jetzt anstellen, dass ich meine Items nur auf gleicher Ebene verschiebe und nicht, wenn ich ein Item über ein anderes loslasse, dieses dort als Child-Item platziert wird? Es sollen also keine ChildItems möglich sein, sondern nur das verschieben der Einträge auf gleicher Ebene.

Kann mir da jemand helfen?
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

dropEvent und dragMoveEvent. Dort prüfen ob ein Drop erlaubt ist und entsprechend reagieren.
Tom_Tom
Beiträge: 54
Registriert: 2. August 2008 18:39

Beitrag von Tom_Tom »

danke für die schnelle Antwort.
Deinen Lösungsansatz an sich hatte ich auch schon drüber nachgedacht.
Allerdings habe ich noch keinerlei Idee, wie ich das ganze dann umsetzen soll.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Ich habe es in einem Projekt mal so gehandhabt, das ich das dropEvent überschrieben habe. Dort habe ich dann das Item ermittelt auf das gedropt wurde und wenn es Kinder hatte, kam eine MessageBox mit dem Hinweis das das nicht geht. Dann wurde die Basisfunktion eben nicht aufgerufen, that's it.
Tom_Tom
Beiträge: 54
Registriert: 2. August 2008 18:39

Beitrag von Tom_Tom »

Hm... das ist aber eher eine unschöne Lösung.

Am Besten wäre es, wenn man den QTreeWidgetItem(s) irgendwie sagen könnte, dass es garnicht erst Drops akzeptieren soll. Sprich: Der User erst garnicht die Möglichkeit hat, soweit zu kommen. Sondern dass er nur innerhalb der Ebene verschieben kann.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Das ist abhängig von den Umständen. Bei mir konnte man nur bestimmte Items in andere Zweige verschieben und da wäre mal ein Plus, mal ein Verbotsschild, als Indikator verwirrend gewesen.

In deinem Falle musst Du dragMoveEvent überschreiben. Schau dir das draggableicons-Example an und du siehst wie es geht.
Antworten