想实现的功能是:将一个文件1或文件夹1托拽到(算是剪切到)另一个文件夹2中。我是这么做的:重写了dragEnterEvent函数和dropEvent函数。但在托拽文件夹的过程中,dragEnterEvent函数和dropEvent函数居然都没有被调用。
list->setSelectionMode(QAbstractItemView::ExtendedSelection);
list->setDragEnabled(true);
list->setAcceptDrops(true);
list->setDropIndicatorShown(true);
model->setSupportedDragActions(Qt::CopyAction|Qt::MoveAction) ;
setAcceptDrops(true ) ;
void Imagewindow::dragEnterEvent ( QDragEnterEvent * event )
{
qDebug("drag event!"); //没有被打印
event->acceptProposedAction () ; //允许用户这个对象托拽到这个控件
}
void Imagewindow::dropEvent ( QDropEvent * event )
{
qDebug("drop event!"); //没有被打印
const QMimeData *data = event->mimeData(); //获得文件1的信息
QPoint point = event->pos (); //获得文件1最终drop的位置
QModelIndex index = list->indexAt(point) ; //也就是文件夹2的位置
if(model->isDir(index)
model->dropMimeData(data, Qt::MoveAction, -1,-1, index ) ; //将文件1放到文件夹2中
}
[ps]我这样行得通吗?