原文见:
http://hi.baidu.com/xchinux/blog/item/793a013ba41cdbe014cecb31.html拖放外部内容到Qt程序中的某个部件中,关键是实现这个部件的三个事件虚函数(前提是设置这个部件的acceptDrops属性为true),下面以拖放外部文件到一个部件上为例说明:
void Widget::dropEvent(QDropEvent *e)
{
if (e->mimeData()->hasUrls())
{
QList<QUrl> urls = e->mimeData()->urls();
QStringList slUrls;
for (int i = 0; i < urls.size(); i++)
{
slUrls << urls
.toLocalFile();
}
//e->acceptProposedAction();
e->accept();
// 这里可以开始做其它事情了,已经将文件名放到slUrls变量中了
}
else
{
QWidget::dropEvent(e);
}
}
void Widget::dragMoveEvent(QDragMoveEvent *e)
{
if (e->mimeData()->hasUrls())
{
//e->acceptProposedAction();
e->accept();
}
else
{
QWidget::dragMoveEvent(e);
}
}
void Widget::dragEnterEvent(QDragEnterEvent *e)
{
if (e->mimeData()->hasUrls())
{
//e->acceptProposedAction();
e->accept();
}
else
{
QWidget::dragEnterEvent(e);
}
}