2010-06-25 68 views
1

嘿,大家好......我遇到这个愚蠢的问题,每当我执行一个双击事件时,两个mousePressed事件也会被触发,这意味着mousePressed事件代码也会被无限次执行两次。我怎样才能配置事件,以便首先检查doubleClick事件的点击次数,并且只有在事件不是这样的情况下,它们才会移至mousePressed事件。这可能吗 ?如何让mousePressed和mouseDoubleClicked事件互斥?

回答

0

我打算假设你是指同一个部件。快速和肮脏的方式将移动鼠标按代码到一个私人的方法,让鼠标按下事件设置一个计时器到期定时器为可能的双击。在双击代码中,如果它被调用,一定要关闭定时器。这将防止鼠标按下事件运行两次。在计时器代码中,让它调用私有方法。

1

在你花费太多时间试图解决这个问题之前,请考虑一下Raymond Chen对"Logical consequences of the way Windows converts single-clicks into double-clicks"的评论。他谈到的技术应该很容易适应Qt。但是,“双击动作的可疑设计与单击动作无关”的用户界面后果 - 您可能会尝试做一些会让用户感到困惑的事情(另一方面 - 您可能会尝试以防止让用户感到困惑)。

此外,相关的文章,"Why doesn't double-right-click bring up the Properties dialog?"可能会感兴趣。

+0

+1。如果您发现单次点击会耗费大量时间,那么请不要试图避免重复收到消息。只要在系统中找到其他可以测试的状态,如果耗时的事情已经完成了,那么当你收到第二条消息时不要再做这件事。 – HostileFork 2010-06-25 20:28:32