Здравствуйте!
Имеется QListWidget, в котором формируется список файлов перетянутых пользователем с проводника Windows.
Пытаюсь реализовать перемещение файлов обратно в проводник, но пока безрезультатно. Вот функция, которая отвечает за перемещение:
void FileListWidget::startDrag()
{
QListWidgetItem *item = currentItem();
if (item) {
QMimeData *mimeData = new QMimeData;
// 1 mimeData->setUrls():
QUrl url(item->text());
QList<QUrl> urls;
urls.append(url);
mimeData->setUrls(urls);
// 2 mimeData->setText():
// mimeData->setText(item->text());
// 3 mimeData->setData():
// QFile src(item->text());
// QByteArray a = src.readAll();
// src.close();
// mimeData->setData("text/uri-list", a);
// 4 Clipboard:
// QClipboard *clipboard = QApplication::clipboard();
// clipboard->setMimeData(mimeData);
QDrag *drag = new QDrag(this);
drag->setMimeData(mimeData);
if (drag->start(Qt::MoveAction) == Qt::MoveAction)
delete item;
}
}
Как видно по комментариям, попытка перетащить файл делалась несколькими способами, при каждом из них были следующие результаты:
OS Linux:
mimeData->setUrls() и mimeData->setText() создавали файл с правильным именем файла, но неправильными содержимым (просто строка с путем к файлу) и расширением (*.txt)
setData() и Clipboard у меня не сработали вообще, правда курсор менялся на "готов что-то скинуть".
OS Windows:
Здесь у меня результаты еще плачевнее, курсор во всех случаях "дает запрет" на вставку файла.
Буду очень благодарен за помощь.
Заранее спасибо.