我覆盖QGraphicsScene
并重载2个方法:mouseDoubleClickEvent
和mouseReleaseEvent
。我希望在每个事件上执行不同的逻辑,但我不知道如何区分它?在mouseReleaseEvent
之前至少发生了mouseDoubleClickEvent
次。
答案 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回答给出了一个相似的解决方案。