操作系统介绍:win10 64位
QT版本: 5.12.6
最近开发一款视频播放器,为了方便用户播放视频文件,增加功能: 用户可以直接将视频文件拖动到窗口里播放。
在QWidget类中重载dragEnterEvent()和dropEvent()函数,并在构造函数中调用setAcceptDrops()函数即可。
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
............
protected:
..........
void dragEnterEvent(QDragEnterEvent *e);
void dropEvent(QDropEvent *e);
}
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
.................
setAcceptDrops(true);
}
void Widget::dragEnterEvent(QDragEnterEvent *e)
{
if (e->mimeData()->hasUrls())
{
e->acceptProposedAction();
}
}
void Widget::dropEvent(QDropEvent *e)
{
foreach (const QUrl &url, e->mimeData()->urls())
{
QString fileName = url.toLocalFile();
qDebug() << "拖入的文件名称:" << fileName;
...........
}
}