2012-10-16 186 views
1

請幫我解決這個問題....我的左側有QListView,另一側有QWidget。在QListView我添加了一些使用QStandardItem的項目。現在,我想將QListView項目拖放到另一側QWidget,我也必須對QWidget執行相同的操作。我可以拖放我QListView項目QListView自身內部使用拖放QListView項目

listView.setAcceptDrops(true); 
listView.setDragEnabled(true); 
listView.setDragDropMode(QAbstractItemView::InternalMove); 

這是工作單獨而QListView內部罰款。我想拖放QListView項目到其他的小部件。我怎樣才能做到這一點?我知道,我必須處理的事件,如

void dropEvent(QDropEvent *); 
void dragMoveEvent(QDragMoveEvent *); 
void dragEnterEvent(QDragEnterEvent *); 
void mousePressEvent(QMouseEvent *); 

我只是想它像這樣

void Example::dragMoveEvent(QDragMoveEvent *e) 
{ 
    // The event needs to be accepted here 
    e->accept(); 
} 

void Example::dragEnterEvent(QDragEnterEvent *e) 
{ 
    // Set the drop action to be the proposed action. 
    e->acceptProposedAction(); 
} 

void Example::dropEvent(QDropEvent *e) 
{ 
    qDebug("Items Dropped"); 
} 

正如我剛纔一些qDebug()這是工作嘗試當我拖動來自我的QListView的物品並將其放在QWidget中,並且我的輸出爲「物品已褪色」但我不知道如何把我的確切QListView的項目在這裏。

回答

4

您不必爲視圖創建子類。所有拖放的東西都由模型處理,因此您必須繼承您的標準模型。你可能想看看model subclassing reference。當然,您還必須將視圖的拖放模式更改爲QAbstractItemView::DragDrop以獲得外部拖放。