一、环境介绍
操作系统介绍: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; ........... } }
四、运行效果