2012-07-09 77 views
0

我有一个QListView的ViewMode设置为IconMode。我想实现以下DnD行为:QListView - 混合拖动模式

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

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

回答

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做到这一点。

+0

谢谢!看起来像个好主意。 – repoman 2012-07-09 16:39:11