QTreeWidget Drop auf Viewport verhindern
Verfasst: 29. August 2017 15:43
Hallo Zusammen,
ich habe für die Drag&Drop Funktion eine Klasse von QTreeWidget abgeleitet (namens MyTreeWidget) und möchte nun verhindern, dass die Child-Items auf den Viewport gedropped werden können, sondern nur innerhalb ihres Parents.
Mein Problem: Bei Berührung des Viewports mit einem Child-Item werden alle weiteren Drag Versuche gesperrt, unabhängig davon, was ich wohin droppen möchte.
Ich habe die Vermutung, dass es an dem event->ignore() liegt, jedoch finde ich keine andere Möglichkeit den Drop zu verhindern. Hatte jemand bereits ein ähnliches Problem oder kennt eine bessere Lösung?
Grüße,
July
Meine MyTreeWidget Klasse sieht so aus:
Im TreeWidget habe ich folgende Einstellungen gesetzt (alle anderen stehen auf ihren Default Werten):
dragDropMode = InternalMove
dragEnabled = true
showDropIndicator = true
selectionBehavior = SelectItems
ich habe für die Drag&Drop Funktion eine Klasse von QTreeWidget abgeleitet (namens MyTreeWidget) und möchte nun verhindern, dass die Child-Items auf den Viewport gedropped werden können, sondern nur innerhalb ihres Parents.
Mein Problem: Bei Berührung des Viewports mit einem Child-Item werden alle weiteren Drag Versuche gesperrt, unabhängig davon, was ich wohin droppen möchte.
Ich habe die Vermutung, dass es an dem event->ignore() liegt, jedoch finde ich keine andere Möglichkeit den Drop zu verhindern. Hatte jemand bereits ein ähnliches Problem oder kennt eine bessere Lösung?
Grüße,
July
Meine MyTreeWidget Klasse sieht so aus:
Code: Alles auswählen
MyTreeWidget::MyTreeWidget(QWidget *parent) : QTreeWidget(parent){}
void MyTreeWidget::dragMoveEvent(QDragMoveEvent *event){
QAbstractItemView::DropIndicatorPosition dropIndPos = this->dropIndicatorPosition();
if(dropIndPos==QAbstractItemView::OnViewport){
event->ignore();
return;
}else{
QTreeWidget::dragMoveEvent(event);
}
}
dragDropMode = InternalMove
dragEnabled = true
showDropIndicator = true
selectionBehavior = SelectItems