Предполагая, что вы обрабатываете drop-действия, переопределяя метод dropEvent(QDropEvent *)
в подклассе некоторого типа QWidget, вы можете вызвать QDropEvent :: source () , чтобы получить указатель на виджет, который пользователь нажал, чтобы начать перетаскивание. Затем вы можете использовать этот указатель, чтобы выполнить поиск в таблице / списке указателей известных источников перетаскивания, или использовать dynamic_cast<QLabel*>()
для него, чтобы попытаться получить из него указатель QLabel
, чтобы можно было вызвать * 1006. * методы на нем или т. д.
Обратите внимание, что этот метод работает, только если операция перетаскивания запущена в вашем приложении. Конечно, это не будет работать, если операция перетаскивания пришла из какого-то другого приложения, потому что в этом случае источник-виджет не находится в пространстве процесса вашей программы, и поэтому нет способа получить указатель на него.
Несколько более элегантный альтернативный метод - добавить виджет-источник к идентификатору QMimeData , а затем вызвать setMimeData () в * 1015 Объект * QDrag перед вызовом exec () . Затем получающий виджет может посмотреть на объект QMimeData , возвращаемый QDropEvent :: mimeData () , чтобы получить эту информацию. Это немного лучше, поскольку он будет работать через границы процессов, и безопаснее, поскольку у вас нет связанных виджетов, разыменовывающих указатели друг на друга или пытающихся уменьшить указатели QObject.