C++ 手动停止QDrag

C++ 手动停止QDrag,c++,qt,qt5,qt5.2,C++,Qt,Qt5,Qt5.2,当dragEnterEvent发生时,我需要停止QDrag。我想在不释放鼠标按钮的情况下释放QDrag 我尝试将事件发送到QDrag,但没有成功 QMouseEvent* evt = new QMouseEvent(QEvent::MouseButtonRelease,event->pos() ,Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); QCoreApplication::sendEvent(drag,evt); 如何做到这一点

当dragEnterEvent发生时,我需要停止QDrag。我想在不释放鼠标按钮的情况下释放QDrag

我尝试将事件发送到QDrag,但没有成功

QMouseEvent* evt = new QMouseEvent(QEvent::MouseButtonRelease,event->pos() ,Qt::LeftButton,  Qt::LeftButton, Qt::NoModifier);
QCoreApplication::sendEvent(drag,evt);
如何做到这一点

更新: 我想在QDragEvent发生时释放鼠标

  QMouseEvent* finishMoveEvent = new QMouseEvent (QEvent::MouseButtonRelease, event->pos (), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);

QTabBar::mouseReleaseEvent(finishMoveEvent);

qApp->sendEvent(parentWidget(),finishMoveEvent);
qApp->sendEvent(drag,finishMoveEvent);
qApp->postEvent(drag,finishMoveEvent,Qt::HighEventPriority);
我尝试了所有可能的组合中的每一行。请帮忙


如何在QDragEnterEvent期间释放QDrag。

拖动本身不接收鼠标事件,小部件接收。拖动过滤器/截获这些事件。您需要将相关事件发送到目标小部件,并希望用户体验不会受到影响。

我正在尝试类似subime文本编辑器选项卡功能的功能。您可以撕开选项卡,当在选项卡栏上时,它会自动附加并开始移动选项卡。希望这是有意义的。因此,如果在拖动过程中将鼠标移到qtabbar上时,QtabWidget会撕掉选项卡,那么哪个小部件将获得事件,以便我可以释放qdrag事件。您最好自己重新实现拖放机制
QDrag
有一个奇怪的同步接口(通过
exec()
),通常麻烦比它的价值还多。QDrag(在Windows中)exec也在阻止主要事件。我在很多论坛上都查过这是个问题。