Russian Qt Forum
Ноябрь 01, 2024, 10:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: drag&drop  (Прочитано 3560 раз)
lem
Гость
« : Декабрь 05, 2010, 18:32 »

поясните плз, как сделать область, при переносе файла на которую переменной присваивался путь к файлу и выполнялся участок кода и как настроить программу чтоб она отображалась не в списке окон (на панели внизу) а в области уведомлений и пявлялась/исчезала при нажатии F11
Записан
ernie
Гость
« Ответ #1 : Декабрь 06, 2010, 07:07 »

1.assistant -> Drag and Drop.
2.window flag QT::Tool + assistant->system tray icon
Записан
lem
Гость
« Ответ #2 : Декабрь 06, 2010, 14:26 »

1)я так понял, что это был совет посмотреть в ассистенте: посмотрел, но не понял, если не сложно, дайте плз пример
2)вообще не понял Непонимающий
Записан
deaks
Гость
« Ответ #3 : Декабрь 06, 2010, 14:52 »

ну емае)))в ассистанте введите Drag and drop examples
Записан
lem
Гость
« Ответ #4 : Декабрь 06, 2010, 16:49 »

простите за нубство, но я в QT недавно, многого не понимаю. В ассистенте я искал, НИЧЕГО НЕ ПОНЯЛ, примеров там как таковых не нашел, только описание класса. Гугление тоже ни к чему не привело. У кого есть время, напишите пожалуйста подробно

все, что я смог найти - это drag and drop для qtextedit, но это не совсем то
Записан
deaks
Гость
« Ответ #5 : Декабрь 07, 2010, 00:10 »

ну тогда может это вам поможет - http://www.qtforum.org/article/33691/solved-how-to-get-full-filename-from-drag-and-drop-file.html
Записан
ernie
Гость
« Ответ #6 : Декабрь 07, 2010, 07:22 »

lem.
1.Сделать setAcceptDrops(true) для виджета.

void <Имя твоего виджетпа>::dragEnterEvent(QDragEnterEvent *event)
{
    bool typeFlag = false;
    urls = event->mimeData()->urls();
    if (urls.isEmpty()) return;
    for (int i=0;i<urls.size();i++)
    {
        QFileInfo *inf = new QFileInfo(urls.at(i).toString());
        QString suf = inf->completeSuffix();
        if ((suf=="jpeg")||(suf=="jpg")||(suf=="tiff")||(suf=="png")||(suf=="raw")||(suf=="bmp")||(suf=="gif"))
        {
            typeFlag = true;
        }
    }
    if (typeFlag==true)
    {
        event->acceptProposedAction();
    }
}

void <Имя твоего виджета>::dropEvent(QDropEvent *event)
{
    foreach(QUrl path,urls)
    {
        QMessageBox::information(this,"dropped files",path.toString());
    }
}

В dragEnterEvent проверяем на возможность опускания на виджет файлов этого типа(в примере это картинки с определенным расширением),а в dropEvent уже осуществляем действия нам нужные с опущенными файлами.
2.чтобы не отображалось окно на панели(баре) надо сделать setWindowFlag(Qt::tool),а по созданию в области уведомлений(как я понял в трее),читай System Tray Icon ,так же если хочешь появления по F11 из любого места ОС,придётся заюзать Qext библиотеку,ибо в qt горячие клавиши только при активном виджете программы работают.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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