首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

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

2012-12-14 
在dragMoveEvent事件中setDropAction方法有什么用?这段代码是从书上copy下来的,但是我不太清楚什么意思,尤

在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不理解。
谢谢

热点排行