Я использую перетаскивание в QWidget, я переопределил dragEnterEvent, dragLeaveEvent, dragMoveEvent и dropEvent, и это хорошо работает.
В моем QWidget у меня есть другие дочерние элементы QWidget, и я хочу, чтобы ониуправлять перетаскиванием тоже.Проблема в том, что мой родительский QWidget перехватывает события dnd, поэтому мои дети не получают его.Как лучше всего сказать «когда вы находитесь над дочерним виджетом, ребенок получает события dnd»?
Спасибо
Редактировать:
мои виджеты выглядят так:
----------------------------------------
| Parent Widget |
| ------------------ |
| | Child Widget | |
| | | |
| ------------------ |
| |
----------------------------------------
мой родительский виджет и дочерний виджет принадлежат к одному и тому же классу.
Код довольно простой, он похож на этот:
DnDWidget::DnDWidget(QWidget* parent)
: QWidget(parent)
{
setAcceptDrops(true);
}
void DnDWidget::dragEnterEvent (QDragEnterEvent* event )
{
qDebug() << "dragEnterEvent";
if (event->mimeData()->hasFormat("foo/bar"))
event->acceptProposedAction();
}
void DnDWidget::dragMoveEvent (QDragMoveEvent* event )
{
qDebug() << "dragMoveEvent";
//do visual feedback stuff
}
dragEnterEventмоего ребенка никогда не зовут.