Russian Qt Forum
Августа 26, 2025, 20:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Drag and Drop?  (Прочитано 3892 раз)
EhTemka
Гость
« : Сентября 03, 2007, 05:02 »



Всем привет!

   qt 4.3.1

     Тут понадобилось использовать Drag and Drop. То есть таскать файлы к примеру из проводника в своё приложение (на како-то виджет). А первый раз с этим связываюсь и ни как не могу разобраться. Как же мне получить путь к файлу который я дропнул?

в QDropEvent можно достать QMimData, но там тоже нет пути...

Очень устал. Если кто знает- помогите плизз Обеспокоенный
Записан
baka
Гость
« Ответ #1 : Сентября 03, 2007, 05:38 »


QMimeData::urls()  -  вернет List с QUrl'ами
QUrl::path()  -  вернет строку с путем.

QList<QUrl> urList(event->mimeData()->urls());
setWindowTitle(urList.first().path());

« Последнее редактирование: Сентября 03, 2007, 05:41 от baka » Записан
EhTemka
Гость
« Ответ #2 : Сентября 03, 2007, 15:44 »

спасибо, гляну
Записан
Amouse
Гость
« Ответ #3 : Января 25, 2008, 13:34 »

А как решить обратную задачу?
Есть item на форме, который надо дропать в Explorer при этом создавая там файл.
(Очевидно, с item`ом связаны некие данные и создаваемый файл должен содержать эти данные (binary),
и должен иметь имя, скажем как у item`а)
?
Записан
EhTemka
Гость
« Ответ #4 : Января 29, 2008, 22:04 »

Для начала тебе придется всеже самому создать файл где-нибуть в темповой папке а при дропе к експлорер он просто скомируется.

примерно так:

                               
Код:
Item::mousePressEvent(QMouseEvent *event)
{
                                QString nameFile;
                                nameFile = saveData(); // твоя функция по созданию файла в темпе

                                QUrl url(nameFile) ;
QDrag *drag = new QDrag(this);
QMimeData *mimeData = new QMimeData;

QList<QUrl> urls;
urls.push_back(url);

mimeData->setUrls(urls);

drag->setMimeData(mimeData);

drag->start(Qt::MoveAction);
}

Может и подругому можно я не знаю, но так должно работать

Да, и где надо (на том виджете что дропаешь) включи item->setAcceptDrops(true);
« Последнее редактирование: Января 29, 2008, 22:10 от EhTemka » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.027 секунд. Запросов: 18.