如果我放一个 MouseArea
在 QML 元素上,然后 MouseArea
将窃取所有鼠标事件。
因此,TextEdit
将是不可编辑和不可选择的。
TextEdit {
// some properties
MouseArea {
// some properties
onClicked: { /* do something */ }
}
}
有办法解决吗?顺便说一句,如果我放一个大
MouseArea
在另一个 MouseArea
, 更大 MouseArea
将窃取所有鼠标事件。我该如何解决?我认为手动传递鼠标事件可以解决这个问题,但是怎么做呢?
最佳答案
您必须启用 MouseArea
传播组合事件,如 clicked
或 released
到下面的组件,如@Torgeirl 的回答所述。
如果您想要您的 TextEdit
, Slider
或 CheckBox
要接收这些类型的事件,只需通过设置它的 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/