如何在QGraphicsScene上区分mouseReleaseEvent和mousedoubleClickEvent

时间:2013-08-02 16:16:40

标签: qt pyside

我覆盖QGraphicsScene并重载2个方法:mouseDoubleClickEventmouseReleaseEvent。我希望在每个事件上执行不同的逻辑,但我不知道如何区分它?在mouseReleaseEvent之前至少发生了mouseDoubleClickEvent次。

1 个答案:

答案 0 :(得分:1)

对于要在双击时发生的逻辑,将代码放在mouseDoubleClickEvent()内,对于要在鼠标释放时发生的逻辑,将代码放在mouseReleaseEvent()内。< / p>

如果您想在用户点击但没有双击时执行某些操作,则必须等待他们是否点击两次。在第一次鼠标释放时,启动一个200ms的计时器。

如果在计时器到期之前得到mouseDoubleClickEvent(),则双击并且您可以执行双击逻辑。如果计时器在您获得另一个mouseDoubleClick()之前到期,那么您知道只需单击一次。

伪代码

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

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

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

singleClick()
{
    // Do single click behavior
}

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