Drag and drop файлов в QT

Привет! Не так давно мне пришлось столкнуться с кросплатформеным фреймворком QT, который позволяет с помощью языка C++ писать программы практически под любую платформу, например Andoid, Windows, IOS и другие. Для моего проекта мне нужно было реализовать добавление файлов в список путем перетаскивания (drag and drop), в рунете информации об этом я не нашел поэтому решил написать эту статью-инструкцию.

central-desktop-socialbridge-drag-and-dropДля начала необходимо сказать что это метод работает только в версиях QT выше 4 и оригинал метода находится на англоязычном блоге одного из разработчиков здесь.

Итак начнем. Для начала необходимо подключить некоторые библиотеки, сделать это нужно добавив в файл заголовка нужной страницы (например я реализовывал drag and drop для главной формы и добавил следующий код в файл mainwindow.h) следующие инклуды:

Далее, все в этом же файле, необходимо указать названия наших будущих функций (прототипы) в разделе private:

После чего в файле .cpp необходимой формы (у меня это mainwindow.cpp) описываем эти две функции следующим образом:

Последний штрих – добавляем в конструктор формы следующую строчку:

Вот в принципе и все в функции dropEvent вы должны будете вместо комментария вызывать свою функцию добавления в список. Например у меня вызывалась функция которая добавляла в ListWidget названия файлов (обрезая полный путь) и добавляла полные пути до файлов в массив. Далее я просто работал с массивом.

Вот так легко реализовать drag and drop в QT, если знать что делать, я же честно говоря довольно долго искал этот способ, в рунете вообще ничего нет по этому поводу, поэтому решил облегчить поиск всем кто столкнется с необходимостью реализации добавления перетаскиванием. Если будут вопросы пишите в комментариях, обязательно отвечу.

Категория: C++
Понравилась статья? Поделись в социальных сетях:

  • kizianov2002

    void dragEnterEvent(QDragEnterEvent *ev);

    Нет примера тела метода