Stop QDrag manually

788 Views Asked by At

I need to stop QDrag when dragEnterEvent occurs. I want to release QDrag without releasing mouse button.

I have tried to send events to QDrag with no luck.

QMouseEvent* evt = new QMouseEvent(QEvent::MouseButtonRelease,event->pos() ,Qt::LeftButton,  Qt::LeftButton, Qt::NoModifier);
QCoreApplication::sendEvent(drag,evt);

How to achieve this?

Update: I would like to release mouse when QDragEvent occurs.

  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);

I tried each of line in all possible combinations. Please help.

How to release QDrag during QDragEnterEvent.

1

There are 1 best solutions below

3
On

The drag itself does not receive the mouse events, widgets do. The drag filters/intercepts those events. You need to send the relevant event to the target widget, and hope that the user experience won't suffer.