在dragMoveEvent事件中setDropAction步骤有什么用

在dragMoveEvent事件中setDropAction方法有什么用?
这段代码是从书上copy下来的,但是我不太清楚什么意思,尤其是dragMoveEvent事件中的setDropAction方法。
下面简称ProjectListWidget为PListWidget。
程序的功能是自定义一个ProjectListWidget控件,继承自ListWidget。它可以支持 在同一个程序中,从一个PListWidget拖动一项到另一个PListWidget中。
如图:




class ProjectListWidget : public ListWidget
{
......
}

void ProjectListWidget::dragEnterEvent (QDragEnterEvent *event)
 {
  ProjectListWidget *source = qobject_cast<ProjectListWidget *> (event->source ()) ;
 
  if (source && source != this)
  {
  //应该是允许接收Move动作的意思
  event->setDropAction (Qt::MoveAction) ;
//这里如果不执行accept的话,就不能拖放到ProjectListWidget中
  event->accept () ;
  }
 }
 
 void ProjectListWidget::dragMoveEvent (QDragMoveEvent *event)
 {
  ProjectListWidget *source = qobject_cast<ProjectListWidget *> (event->source ()) ;
 
  if (source && source != this)
  {
  //暂时不懂什么意思,有和没有的效果一样,很无语
  event->setDropAction (Qt::MoveAction) ;
  event->accept () ;
  }
 }
 
 void ProjectListWidget::dropEvent (QDropEvent *event)
 {
  ProjectListWidget *source = qobject_cast<ProjectListWidget *> (event->source ()) ;
 
  if (source && source != this)
  { 
  addItem (event->mimeData ()->text ()) ;
//同样不懂什么意思,有和没有都能完成拖放动作...
  event->setDropAction (Qt::MoveAction) ;
  event->accept () ;
  }
 }

------解决方案--------------------
我知道了,没人回答要怎么结贴呢。
------解决方案--------------------
知道啥了?
额。。哪个开始drag就实现dragEnterEvent

拖动到的目的对象就实现dropEvent()...
------解决方案--------------------
引用:
知道啥了?
额。。哪个开始drag就实现dragEnterEvent

拖动到的目的对象就实现dropEvent()...

这个我知道,我就是对setDropAction不理解。
谢谢