Os X Yosemite Qt drag & drop ошибка имени файла

Я пытался использовать простую функцию перетаскивания в моем приложении Qt. Вот мой код:

MyWindow::MyWindow(QWidget *parent)
{
    ..........
    setAcceptDrops(true);
}

void MyWindow::dragEnterEvent(QDragEnterEvent *e)
{
    if (e->mimeData()->hasUrls()) {
        e->acceptProposedAction();
    }
}

void MyWindow::dropEvent(QDropEvent *e)
{
    foreach (const QUrl &url, e->mimeData()->urls()) {
        const QString &fileName = url.toLocalFile();
        qDebug() << "Dropped file:" << fileName;
    }
}

Как видите, он просто печатает путь к файлу bing, сброшенному в консоль. Поэтому, когда я перетащил файл с рабочего стола в виджет, я ожидал что-то вроде/Users/<myName>/Desktop/<filename> в консоли. Но я вижу что-то вродеfile:///.file/id=6571367.2773272/ печатается. И когда я пытаюсь использовать его каким-то образом, например, открывая файл (текст) в моем встроенном редакторе, который работал нормально для всех ОС, кромеOs X Yosemiteприложение вылетает.

Это известная ошибка, как опубликованоВотс патчемВот, Но я не знаю, как использовать патч, чтобы заставить мой код работать. Кажется, есть решение с оберткой Objective C вокруг Qt, однако я не знаю, как именно смешивать C ++ в Qt и Objective C.

Любая идея, как я могу использовать патч, или заставить его работать другим способом? Каким-то образом мне нужно получить фактический полный путь к файлу, который удаляется.

Окружение - Os X Yosemite, Qt Creator 3.1.1 с Qt 5.2.1.

Мне также нужно будет запустить одно и то же приложение в Windows (мы разрабатываем для Qt как для Windows, так и для Mac), поэтому ищу кроссплатформенное решение.

Ответы на вопрос(2)

Ваш ответ на вопрос