0

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

4

1 回答 1

2

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

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

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

伪代码

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

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

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

singleClick()
{
    // Do single click behavior
}

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

于 2013-08-02T16:29:28.870 回答