我有一个代表附加到我的TableViewColumn
,其中包含MouseArea
。我使用MouseArea
来检测表格中单个单元格的双击,这允许我显示一个TextField
用于编辑目的。如何正确处理鼠标区域重叠的QML TableView中的鼠标事件?
问题是代表MouseArea
阻止鼠标事件传播到TableView
。这意味着TableView
的选择行为不再有效。具体来说,我已启用SelectionMode.ExtendedSelection
。
的MouseArea
子项很简单,原来是这样的:
MouseArea{
id: mousearea
anchors.fill: parent
onDoubleClicked: {
showTextField()
}
}
咨询文件后,它看起来像这应该工作:
MouseArea{
id: mousearea
anchors.fill: parent
propagateComposedEvents: true // new
onDoubleClicked: {
showTextField()
}
onPressed: mouse.accepted = false // new
}
它的确,除了现在我不能选择双击事件(在MouseArea
)!这是有道理的,因为它在文档中后来指出:
压(的MouseEvent鼠标)
在处理该信号,用鼠标参数的接受属性来控制这个鼠标区域是否处理媒体和所有未来的鼠标事件直到发布。默认是接受该事件,并且不允许其中的其他MouseAreas处理该事件。 如果接受设置为false,则在下一个按钮被按下之前,不会再有事件发送到此MouseArea。
似乎没有办法在TableView
级别捕获单个单元格的鼠标事件。这是我第一次使用QML玩游戏,所以我可能错过了一些明显的东西,但我的选择是什么?注意我正在使用PyQt。
'MouseAreas'在哪里重叠,你想为每个行为做什么? – derM
对不起,我编辑了我的答案,包括更多的细节。请看第二段。 – woggy
所以你想要存档的唯一东西是选择行? – derM