RaidenVideoRipper
/
videowidget.cpp
52 строки · 1.2 Кб
1#include "videowidget.h"2#include <QEvent>3#include <QDropEvent>4#include <QMimeData>5
6VideoWidget::VideoWidget(QWidget *parent) : QVideoWidget(parent)7{
8QObject *child = findChild<QWidget*>();9child->installEventFilter(this);10}
11
12// Qt 6 bug: https://bugreports.qt.io/browse/QTBUG-107668
13
14bool VideoWidget::eventFilter(QObject *object, QEvent *event)15{
16QObject *child = findChild<QWidget*>();17
18if(object == child){19if(event->type() == QEvent::DragEnter)20{21event->accept();22return true;23}24else if(event->type() == QEvent::DragMove)25{26event->accept();27return true;28}29else if(event->type() == QEvent::Drop)30{31handleDragDidDrop(static_cast<QDropEvent *>(event));32event->accept();33return true;34}35}36return QVideoWidget::eventFilter(object, event);37}
38
39void VideoWidget::handleDragDidDrop(QDropEvent *event) {40auto mimeData = event->mimeData();41if (!mimeData) {42return;43}44if (!mimeData->hasUrls()) {45return;46}47if (mimeData->urls().count() < 1) {48return;49}50auto url = mimeData->urls().at(0);51emit dragDidDropUrl(url);52}
53