【问题标题】:QTreeWidget itemClicked signal is emitted twice for double click双击 QTreeWidget itemClicked 信号两次
【发布时间】:2019-01-18 07:41:21
【问题描述】:

在我的 QTreeWidget 中, 当我单击时-> 必须执行单击操作 当我双击时 -> 必须执行双击操作(可以同时执行单击操作)。

但是发生的情况是每次,除了双击动作之外,双击执行,两次单击的槽被调用。

无论如何,我认为这不是 QTreeWidget 的理想行为。

谁能建议我如何解决这个问题,希望以一种简短、简单和干净的方式。

【问题讨论】:

  • 所以我认为你使用 itemDoubleClicked() 和 itemClicked() 信号,所以 itemDoubleClicked() 被调用一次, itemClicked() 被调用两次?
  • @Dardanboy。是的。
  • 您可以在使用 itemClicked() 调用的插槽中使用计时器,您将在其中等待 mouseDoubleClickInterval (doc.qt.io/qt-5/qstylehints.html#mouseDoubleClickInterval-prop)。计时器完成后,您将检查 itemDoubleClicked() 是否已被调用(通过将 m_isAlreadyDoubleClicked 等变量传递到插槽时设置为 true)。否则,如果 m_isAlreadyDoubleClicked 为 false,则表示用户只点击了一次。

标签: qt


【解决方案1】:

根据收到 itemClicked 时的操作,您可能希望使用 currentItemChanged 作为解决方法。这甚至可能对键盘用户有所帮助。但这实际上取决于您在收到 itemClicked 后要做什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 2018-04-23
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    相关资源
    最近更新 更多