QListView - 混合拖动模式

时间:2012-07-09 13:15:35

标签: qt drag-and-drop

我有一个QListView,ViewMode设置为IconMode。我想实现以下DnD行为:

  • 如果在视图内拖动列表视图项,则仅更改视图中的项位置。这与设置DragDropMode等于InternalMove相同。
  • 如果列表项移出视图,则可以将其复制到另一个外部视图。在这种情况下,DragDropMode等于DragOnly。

如何混合这两种模式,以便视图支持这两种行为?

1 个答案:

答案 0 :(得分:1)

您可以通过覆盖视图的dropEvent来执行此操作:

void MyListView::dropEvent( QDropEvent* e )
{
    if( e->source() != this )
    {
        // something comes from the outside
        // what to do? return?
        return;
    }
    else
    {
        // event comes from the view itself, let's do some stuff
        // for example call the base class default event
        QAbstractItemView::dropEvent(e);
    }
}

我想正确的标志是QAbstractItemView::DragDrop来做这件事。