【问题标题】:Qt: Can mouse event handlers block one another?Qt:鼠标事件处理程序可以互相阻塞吗?
【发布时间】:2012-04-06 04:11:52
【问题描述】:

我有一个简单的父小部件,它重新实现了 mousePressEvent/mouseReleaseEvent。父级的子小部件使用 enterEvent/leaveEvent。当我将鼠标悬停在子小部件上时, leaveEvent/enterEvent 会执行,但是当我单击并按住鼠标时,mousePressEvent 会执行,但 enterEvent/leaveEvent 会静音(换句话说,没有单击和拖动)。关于可能导致此问题的任何想法?

【问题讨论】:

    标签: qt event-handling


    【解决方案1】:

    如果您在小部件上按住鼠标按钮,则该小部件抓取鼠标事件,直到您释放按钮。这不是 Qt 的特殊功能,您可以在我知道的所有其他 GUI API 中找到类似的行为。

    查看 Qt 文档的相关部分:

    QWidget / Events:

    mousePressEvent() 在按下鼠标按钮时调用 鼠标光标在小部件内,或者当小部件抓住 鼠标使用grabMouse()。 按下鼠标而不松开是 实际上与调用 grabMouse() 相同。

    void QWidget::grabMouse ():

    抓取鼠标输入。此小部件接收所有鼠标事件,直到 releaseMouse() 被调用; 其他小部件根本没有鼠标事件

    【讨论】:

      猜你喜欢
      • 2012-04-11
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      相关资源
      最近更新 更多