qml - MouseArea 窃取了 QML 元素的鼠标事件

标签 qml mouseevent mousearea

如果我放一个 MouseArea在 QML 元素上,然后 MouseArea将窃取所有鼠标事件。
因此,TextEdit将是不可编辑和不可选择的。

TextEdit {
    // some properties
    MouseArea {
        // some properties
        onClicked: { /* do something */ }
    }
}
有办法解决吗?
顺便说一句,如果我放一个大MouseArea在另一个 MouseArea , 更大 MouseArea将窃取所有鼠标事件。我该如何解决?我认为手动传递鼠标事件可以解决这个问题,但是怎么做呢?

最佳答案

您必须启用 MouseArea传播组合事件,如 clickedreleased到下面的组件,如@Torgeirl 的回答所述。

如果您想要您的 TextEdit , SliderCheckBox要接收这些类型的事件,只需通过设置它的 accepted 来传递事件。属性(property)到false .

示例代码:

RowLayout {
    TextEdit { text: "Hi" }
    Slider {}
    CheckBox { text: "CheckBox"}

    MouseArea {
        anchors.fill: parent
        propagateComposedEvents: true

        onClicked: mouse.accepted = false;
        onPressed: mouse.accepted = false;
        onReleased: mouse.accepted = false;
        onDoubleClicked: mouse.accepted = false;
        onPositionChanged: mouse.accepted = false;
        onPressAndHold: mouse.accepted = false;
    }
}

关于qml - MouseArea 窃取了 QML 元素的鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16183408/

相关文章:

python - 更新只能从 GUI 线程或从 QQuickItem::updatePaintNode() 安排

java - 如何等待弹出菜单在 Swing 中关闭

java - 如何获取Java Swing列表中未选中的右键单击项?

button - qml 按钮未触发,与 MouseArea 相同

qt - 如何更改 Qml 中 ListView 滚动条的位置

linux - 执行已知已安装的可执行文件时遇到问题

qml - 将 MouseArea 事件从父级传播到子级

qt - Qt::createQmlObject(字符串 qml、对象父级、字符串文件路径)在 BB10 Cascades 中工作吗?

javascript - 为什么在某些情况下单击鼠标中键不会触发 'click'?