【发布时间】:2011-11-04 19:22:31
【问题描述】:
我在 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 永远不会被调用。
【问题讨论】:
标签: c++ qt drag-and-drop