2012-07-09 95 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