- 現象:在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.....
}
}