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), поэтому ищу кроссплатформенное решение.