区分Qt中的单击和双击事件

Jes*_*ogt 12 c++ qt qt4

我有一个QAbstractItemView需要对单击和双击事件做出反应.根据是单击还是双击,操作会有所不同.发生的问题是在双击事件之前收到单击事件.

是否有推荐的方法/最佳实践来区分两者?当用户实际双击时,我不想执行单击操作.

我使用的是Qt 4.6

Bil*_*ill 11

这是一个很好的用户界面设计,以确保您的单击和双击在概念上相关:

Single-Click: select icon
Double-Click: select icon and open it

Single-Click: select color
Double-Click: select color and open palette editor
Run Code Online (Sandbox Code Playgroud)

请注意,在这些示例中,单击操作实际上是双击的子集.这意味着您可以继续正常执行单击操作,只需双击即可执行其他操作.

如果您的用户界面执行以下操作:

Single-Click: select icon
Double-Click: close window
Run Code Online (Sandbox Code Playgroud)

然后,您将设置用户失败.即使他们记得单击一下而不是一直双击,但是在双击或等待太久的情况下,很容易意外地将鼠标移动太远.

编辑:

听到这个消息我很难过.

在那种情况下,我发现这两篇文章很有用:

  • 这是一个好点,但不幸的是,不是我的决定. (3认同)

Pio*_*ost 7

你可以在QtCentre论坛上标题为Double Click Capturing的主题中找到答案;

你可以有一个计时器.在releaseEvent处理程序中启动计时器,并确保超时足够长,以便先处理双击.然后,在双击事件处理程序中,您可以停止计时器并防止它被触发.如果未触发双击处理程序,则计时器将超时并调用您选择的插槽,您可以在其中处理单击.这当然是一个讨厌的黑客,但有机会工作.

wysota