implementation of reordering (outline)

This commit is contained in:
Herwig Birke
2018-10-04 12:02:21 +02:00
parent 02596fb87c
commit ebfb03bcba
7 changed files with 60 additions and 74 deletions
+17 -13
View File
@@ -45,24 +45,28 @@ qint16 level(QModelIndex index)
void cTreeView::dropEvent(QDropEvent* event)
{
QModelIndex fromIndex = selectedIndexes()[0];
QModelIndex droppedIndex = indexAt(event->pos());
QStandardItemModel* lpModel = (QStandardItemModel*)model();
QModelIndex fromIndex = selectedIndexes()[0];
QStandardItem* lpFromItem = lpModel->itemFromIndex(fromIndex);
QModelIndex droppedIndex = indexAt(event->pos());
DropIndicatorPosition pos = dropIndicatorPosition();
qint16 fromLevel = level(fromIndex);
qint16 droppedLevel = level(droppedIndex);
// QStandardItemModel* lpModel = (QStandardItemModel*)this->model();
// QStandardItem* lpToItem = lpModel->itemFromIndex(droppedIndex);
// if(droppedLevel < fromLevel-1)
// return;
// else if(droppedLevel > fromLevel)
// return;
if(fromLevel != droppedLevel)
if(droppedLevel < fromLevel-1)
return;
else if(droppedLevel > fromLevel)
return;
else if(droppedLevel == fromLevel && pos == DropIndicatorPosition::OnItem)
return;
else if(droppedLevel == fromLevel-1 && pos == DropIndicatorPosition::BelowItem)
return;
QTreeView::dropEvent(event);
QModelIndex toIndex = selectedIndexes()[0];
dropped(this, fromIndex, toIndex);
QModelIndex toIndex = selectedIndexes()[0];
lpFromItem->setData(toIndex.row(), Qt::UserRole+2);
dropped(this);
}