我被覆盖QGraphicsScene
并重载了 2 种方法:mouseDoubleClickEvent
和mouseReleaseEvent
. 我想在每个事件上执行不同的逻辑,但我不知道如何区分它?之前至少mouseReleaseEvent
发生过1 次mouseDoubleClickEvent
。
问问题
1334 次
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 回答