简体   繁体   English

手动停止QDrag

[英]Stop QDrag manually

I need to stop QDrag when dragEnterEvent occurs. 当dragEnterEvent发生时,我需要停止QDrag。 I want to release QDrag without releasing mouse button. 我想在不释放鼠标键的情况下释放QDrag。

I have tried to send events to QDrag with no luck. 我尝试将事件发送给QDrag却没有运气。

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. 更新:我想在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);

I tried each of line in all possible combinations. 我尝试了所有可能组合的每一行。 Please help. 请帮忙。

How to release QDrag during QDragEnterEvent. 如何在QDragEnterEvent期间释放QDrag。

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. 您需要将相关事件发送到目标小部件,并希望不会影响用户体验。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM