2012-10-16 4 views
1

이 문제를 해결하려면 저를 도우십시오. 왼쪽에 QListView, 반대쪽에 QWidget이 있습니다. QListView에서 나는 QStandardItem을 사용하여 몇 가지 항목을 추가했습니다. 이제 드래그 앤 드롭 QListView 항목을 반대쪽 QWidget에 넣으려면 QWidget과 동일하게해야합니다. 나는 드래그 앤이 혼자 QListView 내부 제대로 작동QListView 아이템 드래그 앤 드롭

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

사용하여 QListView 자체 내에서 내 QListView 항목을 을 놓을 수 있습니다. QListView Items를 다른 위젯으로 드래그 앤 드롭하고 싶습니다. 내가 어떻게 할 수 있니? 나는 내가이를 드래그 할 때 난 그냥이 작동하고 어떤 qDebug(), 과 노력으로 난 그냥이

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"); 
} 

처럼 그것을 시도

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

같은 이벤트를 처리 할 수있는 것을 알고있다 내 QListView의 항목을 QWidget에 놓고 출력이 "항목이 떨어짐"으로 표시됩니다. 하지만 내 정확성을 가져 오는 방법을 모른다. QListView 님의 아이템 여기.

답변

4

뷰를 서브 클래스로 만들 필요는 없습니다. 모든 끌어서 놓기 물건은 모델에 의해 처리되므로 표준 모델을 서브 클래스해야합니다. model subclassing reference을 살펴 보시기 바랍니다. 물론 외부 드래그 앤 드롭을 사용하려면보기의 끌어서 놓기 모드를 QAbstractItemView::DragDrop으로 변경해야합니다.