- 现象:在TextInput中加入了一个MouseArea后,发现输入框无法再接收鼠标和按键事件,我的代码如下:
TextEdit {
// properties.....
MouseArea {
// properties.....
OnClicked: { /* do something */ }
}
}
- 原因:MouseArea默认不会将鼠标事件传送到控件堆层的低层。这一行为由MouseArea中的propagateComposedEvents控制,Qt对该属性的描述如下图:
- 解决方法
- 将propagateComposedEvents 设为true,并在onClicked事件中将焦点设置到输入框
TextEdit {
// properties.....
id: input
MouseArea {
// properties.....
OnClicked: {
/* do something */
input.forceActiveFocus(Qt.MouseFocusReason)
}
}
}
- 将 MouseArea置换到比TextEdit低的图层
MouseArea {
// properties.....
OnClicked: { /* do something */ }
}
TextEdit {
// properties.....
}
}