我幾乎做同樣的事情,前一段時間,我能想到的3兩件事:
這是我正在做的一個非常簡單的例子。
在dragMoveEvent()
中,我顯示了跌落指標。這樣,當您拖動對象時,您將始終顯示拖放指示器。
void MyTreeView::dragMoveEvent(QDragMoveEvent* event)
{
setDropIndicatorShown(true);
QTreeView::dragMoveEvent(event);
}
在dropEvent()
,我是管理各種情況下,這是說,如果我是拖動項目是另一個項目,它上方,下方,或視口。然後,據我所知,我正在管理自己的下落,在事件結束時,我隱藏了下降指示器。
void MyTreeView::dropEvent(QDropEvent* event)
{
bool dropOK = false;
DropIndicatorPosition dropIndicator = dropIndicatorPosition();
switch (dropIndicator)
{
case QAbstractItemView::AboveItem:
dropOK = true;
break;
case QAbstractItemView::BelowItem:
dropOK = true;
break;
case QAbstractItemView::OnItem:
dropOK = false;
break;
case QAbstractItemView::OnViewport:
dropOK = false;
break;
}
if(dropOK)
{
// Here, you need to manage yourself the case of dropping an item
}
setDropIndicatorShown(false); // hide the drop indicator once the drop is done
}
「紅利」:您可以通過PrimitiveElementPE_IndicatorItemViewItemDrop
訪問下降指標在你自己的風格。 你可以看到如何定製它here和here。
這完美的作品。 – Carlton