Os X Yosemite Qt arrastrar y soltar el error de nombre de archivo

Intenté usar una función simple de arrastrar y soltar en mi aplicación Qt. Aquí está mi código:

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;
    }
}

Como puede ver, simplemente imprime el nombre de ruta del archivo bing que se dejó caer en la consola. Entonces, cuando arrastré y solté un archivo desde mi escritorio en el widget, esperaba algo como/Users/<myName>/Desktop/<filename> en la consola Pero veo algo comofile:///.file/id=6571367.2773272/ siendo impreso Y cuando trato de usarlo de alguna manera, como abrir el archivo (texto) en mi editor incorporado, que funcionaba bien para todos los sistemas operativos exceptoOs X Yosemite, la aplicación se bloquea.

Es un error conocido, tal como se publicó.aquí, con un parcheaquí. Pero no sé cómo usar el parche para que mi código funcione. Parece que hay una solución con un contenedor Objective C alrededor de Qt, sin embargo, no sé cómo mezclar exactamente C ++ en Qt y Objective C.

¿Alguna idea de cómo uso el parche o lo hago funcionar de alguna otra manera? De alguna manera, necesito recuperar la ruta completa real del archivo que se descarta.

Entorno: Os X Yosemite, Qt Creator 3.1.1 con Qt 5.2.1.

Necesitaré ejecutar la misma aplicación en Windows también (estamos desarrollando en Qt para Windows y Mac), por lo que estoy buscando una solución multiplataforma.

Respuestas a la pregunta(2)

Su respuesta a la pregunta