0

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

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

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

4

1 回答 1

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这样做。

于 2012-07-09T14:51:35.967 回答