Название: Drag&Drop
Отправлено: Kn1fe от Сентябрь 07, 2017, 18:12
Вообщем есть класс, унаследованный от QTableWidget и у него переопределены функции drag&drop. void ArchiveQTableWidget::dragEnterEvent(QDragEnterEvent *event) { if (event->mimeData()->hasUrls()) { event->acceptProposedAction(); } }
void ArchiveQTableWidget::dragMoveEvent(QDragMoveEvent *event) { event->acceptProposedAction(); }
void ArchiveQTableWidget::dragLeaveEvent(QDragLeaveEvent *event) { event->accept(); }
void ArchiveQTableWidget::dropEvent(QDropEvent *event) { foreach (const QUrl &url, event->mimeData()->urls()) { QString fileName = url.toLocalFile(); qDebug() << "Dropped file:" << fileName; } }
void ArchiveQTableWidget::startDrag(Qt::DropActions supportedActions) { qDebug() << supportedActions; QFileInfo fi("1"); QUrl url = QUrl::fromLocalFile(fi.absoluteFilePath()); qDebug() << fi.absoluteFilePath(); QMimeData *mimeData = new QMimeData; mimeData->setData("application/octet-stream", QByteArray("raq")); mimeData->setUrls(QList<QUrl>() << url); QDrag *drag = new QDrag(this); drag->setMimeData(mimeData); drag->exec(Qt::MoveAction); } Перетаскивание файлов и папок на программу работает прекрасно, а вот обратно никак не получается перенести. Натолкните на правильный путь.
Название: Re: Drag&Drop
Отправлено: Kn1fe от Сентябрь 09, 2017, 01:19
Неужели вообще никто с Drag&Drop файлов не работал? Нашел способ вытащить 1 файл, мб кто знает как заставить его создать больше? пробовал засунуть в цикл for, зависает при вызове второго drag->exec QDrag *drag = new QDrag(this); QString filename = "1.txt"; QMimeData* mimeData = new QMimeData; FILEGROUPDESCRIPTOR desc; desc.cItems = 1; desc.fgd[0].dwFlags = FD_PROGRESSUI; wcscpy(desc.fgd[0].cFileName, filename.toStdWString().c_str()); mimeData->setData("FileGroupDescriptor", QByteArray((const char*)&desc, sizeof(FILEGROUPDESCRIPTOR))); mimeData->setData("FileContents", QByteArray("whatadjsaofhniewfnj")); drag->setMimeData(mimeData); qDebug() << drag->exec(supportedActions);
Название: Re: Drag&Drop
Отправлено: Bepec от Сентябрь 09, 2017, 02:18
Возьмите дроп, перелейте данные в drag, посмотрите результат. Получилось? Прочитайте данные, сверьте поля, найдите свою ошибку. Пользуйтесь.
|