Прежде всего, если вы не читали документацию Qt Drag and Drop , которую вы действительно хотите начать там. То, что я собираюсь рассказать вам, это краткое изложение того, что там. Вы также должны обязательно посмотреть примеры перетаскивания , как только прочитаете описание процесса.
Во-вторых, и я прошу прощения, если я неправильно понял, ваш вопрос звучит так, как будто вы не совсем знакомы с C ++. Вы хотите объявить методы в файле .h
и определить их в файле .cpp
. Вы можете использовать Дизайнер, чтобы сделать некоторые из этих объявлений событий, но вам нужно будет определить реализацию этих событий в .cpp
. Если это не ясно, вам нужно будет сначала прочитать больше о базовом C ++.
Если вы знакомы с этими основами, вот краткое описание того, как работает перетаскивание:
- Перетаскивание выполняется:
- Создание
QDrag
. Вы хотите сделать это в случае, если вызовет перетаскивание, во всех случаях я могу вспомнить щелчок мыши (mousePressEvent
или mouseMoveEvent
- что зависит от того, какое именно поведение вы хотите видеть).
- Кодирование данных, которые вы хотите перетащить. Вы делаете это, используя MIME-кодирование, стандартный способ пометить, какой тип документа перетаскивается. (Примеры включают текст, изображения и большинство других форматов мультимедиа). Предположим, текст для простого случая.
- Создать
QMimeData
- Установить данные для соответствующего типа (например, для использования текста
QMimeData::setText
) \
- Добавьте данные mime к объекту перетаскивания с помощью
QDrag::setMimeData
.
- Позвоните
QDrag::exec
на объект перетаскивания.
- Удаление выполняется:
- Включение свойства
acceptDrops
для данного виджета с использованием QWidget::setAcceptDrops(true)
.
- Определите
dropEvent
в вашем виджете для обработки падения. Данные, которые вы устанавливаете при перетаскивании с помощью setMimeData
, доступны как метод события перетаскивания QDropEvent::mimeData
. Вам необходимо извлечь из него данные, используя соответствующий тип документа (например, text()
).
Очевидно, что это не завершено, но перетаскивание имеет достаточно шагов, которые вы действительно должны прочитать о них подробно один раз и посмотреть на некоторые примеры. Это резюме предназначено, чтобы дать вам представление о том, что вам нужно делать.