void XXXX::mouseMoveEvent(QMouseEvent *event)
{this->viewport()->setCursor(Qt::PointingHandCursor);
QString fileName /*=指向一个本地存在的文件 */;
if (event->buttons() & Qt::LeftButton)
{int distance = (event->pos() - _startPos).manhattanLength();
if (distance >= QApplication::startDragDistance() && !this->rect().contains(event->pos()))
{QMimeData *mimeData = new QMimeData;
mimeData->setData("drag/fileName", fileName.toUtf8());
QDrag* drag = new QDrag(this);
drag->setMimeData(mimeData); drag->setHotSpot(event->pos());drag->exec(Qt::CopyAction, Qt::CopyAction);
} }return XXXX::mouseMoveEvent(event);
}
关键点:执行操作设置为 Qt::CopyAction 。

本文介绍了一个Qt应用程序中实现文件拖放功能的具体方法。通过重写`mouseMoveEvent`函数并使用`QDrag`类,当鼠标左键按下并移动超过一定距离时触发拖放操作。该操作将指定的文件名封装为`QMimeData`对象,并以复制的方式执行拖放。
3297

被折叠的 条评论
为什么被折叠?



