RaidenVideoRipper

Форк
0
/
videowidget.cpp 
52 строки · 1.2 Кб
1
#include "videowidget.h"
2
#include <QEvent>
3
#include <QDropEvent>
4
#include <QMimeData>
5

6
VideoWidget::VideoWidget(QWidget *parent) : QVideoWidget(parent)
7
{
8
    QObject *child = findChild<QWidget*>();
9
    child->installEventFilter(this);
10
}
11

12
// Qt 6 bug: https://bugreports.qt.io/browse/QTBUG-107668
13

14
bool VideoWidget::eventFilter(QObject *object, QEvent *event)
15
{
16
    QObject *child = findChild<QWidget*>();
17

18
    if(object == child){
19
        if(event->type() == QEvent::DragEnter)
20
        {
21
            event->accept();
22
            return true;
23
        }
24
        else if(event->type() == QEvent::DragMove)
25
        {
26
            event->accept();
27
            return true;
28
        }
29
        else if(event->type() == QEvent::Drop)
30
        {
31
            handleDragDidDrop(static_cast<QDropEvent *>(event));
32
            event->accept();
33
            return true;
34
        }
35
    }
36
    return QVideoWidget::eventFilter(object, event);
37
}
38

39
void VideoWidget::handleDragDidDrop(QDropEvent *event) {
40
    auto mimeData = event->mimeData();
41
    if (!mimeData) {
42
        return;
43
    }
44
    if (!mimeData->hasUrls()) {
45
        return;
46
    }
47
    if (mimeData->urls().count() < 1) {
48
        return;
49
    }
50
    auto url = mimeData->urls().at(0);
51
    emit dragDidDropUrl(url);
52
}
53

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.