【问题标题】:How to distinguish between mouseReleaseEvent and mousedoubleClickEvent on QGraphicsSceneQGraphicsScene上如何区分mouseReleaseEvent和mousedoubleClickEvent
【发布时间】:2013-08-04 00:10:32
【问题描述】:

我被 QGraphicsScene 覆盖并重载了 2 个方法:mouseDoubleClickEventmouseReleaseEvent。我想在每个事件上执行不同的逻辑,但我不知道如何区分?至少 1 个mouseReleaseEvent 出现在mouseDoubleClickEvent 之前。

【问题讨论】:

标签: qt pyside


【解决方案1】:

对于您希望在双击时发生的逻辑,将代码放入 mouseDoubleClickEvent() 中,对于您希望在鼠标释放时发生的逻辑,将代码放入 mouseReleaseEvent() 中。

如果您想在用户单击但不双击时执行某些操作,则必须等待查看他们是否单击了两次。在第一次释放鼠标时,启动一个 200 毫秒的计时器。

如果您在计时器到期之前收到mouseDoubleClickEvent(),那么这是一次双击,您可以执行双击逻辑。如果计时器在您收到另一个 mouseDoubleClick() 之前到期,那么您知道这是一次单击。

伪代码

main()
{
    connect(timer, SIGNAL(timeout()), this, SLOT(singleClick()));
}

mouseReleaseEvent()
{
    timer->start();
}

mouseDoubleClickEvent()
{
    timer->stop();
}

singleClick()
{
    // Do single click behavior
}

This 的回答给出了一个相当相似的解决方案。

【讨论】:

  • 我使用 mouseReleaseEvent 仅出于一个原因 - 没有事件 mouseClickEvent。我想在单击时执行一些逻辑,在双击时执行其他逻辑。所以我不能使用你的解决方案——它已经实现了,还不够。
猜你喜欢
  • 2011-12-17
  • 1970-01-01
  • 2016-07-23
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-06
  • 1970-01-01
相关资源
最近更新 更多