我有一个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)
然后,您将设置用户失败.即使他们记得单击一下而不是一直双击,但是在双击或等待太久的情况下,很容易意外地将鼠标移动太远.
编辑:
听到这个消息我很难过.
在那种情况下,我发现这两篇文章很有用:
你可以在QtCentre论坛上标题为Double Click Capturing的主题中找到答案;
你可以有一个计时器.在releaseEvent处理程序中启动计时器,并确保超时足够长,以便先处理双击.然后,在双击事件处理程序中,您可以停止计时器并防止它被触发.如果未触发双击处理程序,则计时器将超时并调用您选择的插槽,您可以在其中处理单击.这当然是一个讨厌的黑客,但有机会工作.
wysota
| 归档时间: |
|
| 查看次数: |
13860 次 |
| 最近记录: |