Qt сбросить файл | Mac OS

Я сделал много поисков (приводит меня к этот а также тот) и добавив несколько строк в мои классы

mainwindow.cpp

#include <QtGui/QDragEnterEvent>
#include <QtGui/QDragLeaveEvent>
#include <QtGui/QDragMoveEvent>
#include <QtGui/QDropEvent>
#include <QtCore/QMimeData>MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
....
setAcceptDrops(true);
}

void MainWindow::dragEnterEvent(QDragEnterEvent *event)
{
event->acceptProposedAction();
}

void MainWindow::dropEvent(QDropEvent *event)
{
qDebug() << "On Drop Event";
const QMimeData* mimeData = event->mimeData();

if (mimeData->hasUrls())
{
QStringList pathList;
QList<QUrl> urlList = mimeData->urls();

for (int i = 0; i < urlList.size() && i < 32; ++i)
{
pathList.append(urlList.at(i).toLocalFile());
}

if(openFiles(pathList))
event->acceptProposedAction();
}
}
void MainWindow::dragMoveEvent(QDragMoveEvent * event)
{
event->acceptProposedAction();
}
void MainWindow::dragLeaveEvent(QDragLeaveEvent* event)
{
event->accept();
}

Но я не могу перетащить файл в свое главное окно (из поиска). Дело не в том, что мой код падает или не компилируется, просто я буквально не может. Нет реакции от MainWindow, нет подсветки, ничего.

Что мне не хватает?

1

Решение

Я подозреваю, что вы также должны быть перегружены dragMoveEvent: —

void QWidget::dragMoveEvent(QDragMoveEvent * event)

Как утверждают документы: —

Этот обработчик событий вызывается, если выполняется перетаскивание, и когда происходит любое из следующих условий: курсор входит в этот виджет, курсор перемещается внутри этого виджета или клавиша-модификатор нажимается на клавиатуре, когда этот виджет имеет фокус. Событие передается в параметре события.

Есть пример перетаскивания Qt Вот. конкретно этот хорошая ссылка.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]