在桌面应该的开发中,经常会碰见拖动文件进入窗口来添加文件的方法。在Qt中实现相当简单。
在要接收拖动文件的widget类中,重载2个虚函数:
protected:
void dragEnterEvent(QDragEnterEvent *event);
virtual void dropEvent(QDropEvent *event);
void ViewWidget::dragEnterEvent(QDragEnterEvent *event)
{
if (event->mimeData()->hasFormat("text/uri-list"))
event->acceptProposedAction();
}
void ViewWidget::dropEvent(QDropEvent *event)
{
QList<QUrl> urls = event->mimeData()->urls();
if (urls.isEmpty())
return;
QString fileName = urls.first().toLocalFile();
if (fileName.isEmpty() )
return;
qDebug() << fileName;
}
但是不要忘记,开启这个窗口接受拖动,在构造方法中调用:
this->setAcceptDrops(true);