如果我将MouseArea添加到TableView实体(以捕获按钮等),那么TableView中的标准反应就不会响应。我可以将信号从MouseArea发送到父TableView吗?
TableView {
TableViewColumn {
role: "name"
title: "Name"
width: (parent.width / 2)
}
TableViewColumn {
role: "type"
title: "Type"
width: parent.width / 4
}
TableViewColumn {
role: "size"
title: "Size"
width: parent.width / 4
}
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.RightButton | Qt.LeftButton
onClicked: {
if (mouse.button == Qt.RightButton) {
...
}
else if(mouse.button == Qt.LeftButton){
...
}
}
}
}
答案 0 :(得分:0)
您可以使用
将其传播到父级propagateComposedEvents: true
并致电
mouse.accepted = false
在每个需要的处理程序中。
来自doc:
将接受设置为true可防止鼠标事件发生 传播到此项目下方的项目。
通常,如果项目作用于鼠标事件,那么它应该是 接受,以便堆叠顺序中较低的项目也不响应 同一事件。
下一个代码:
MouseArea
{
anchors.fill: parent
acceptedButtons: Qt.RightButton | Qt.LeftButton
propagateComposedEvents: true
onPressed:
{
if (mouse.button == Qt.RightButton) {
console.log("ss")
}
else if(mouse.button == Qt.LeftButton){
console.log("ss")
}
mouse.accepted = false
}
onReleased: mouse.accepted = false
onPressAndHold: mouse.accepted = false
}
捕获点击次数(console.log("ss")
有效),但tableview
获取所有事件,因此您可以移动列,点击它等。