我必须将组件X放在ScrollView中。组件X必须处理鼠标滚轮事件,但ScrollView会处理它。因此,以下示例(简化)不起作用。
如何让Rectangle的鼠标区域处理OnWheel事件?
import QtQuick 2.1
import QtQuick.Controls 1.0
import QtQuick.Window 2.0
import QtQuick.Layouts 1.0
ApplicationWindow {
width: 640
height: 480
ScrollView {
height: 100
width: 100
ColumnLayout{
Rectangle {
color: "red"
width: 50
height: 50
MouseArea {
anchors.fill: parent
onWheel: {
console.log("onWheel"); // it doesn't work
}
onClicked: {
console.log("onClicked"); // it works
}
}
}
}
}
}
答案 0 :(得分:3)
这实际上是Qt中的一个错误:
这在以下方面得到解决:
答案 1 :(得分:1)
我找到了解决问题的方法,但我无法正确解释。 :(
This document说明了visual parent
和object parent
的概念,但它并没有说明它们如何影响事件传播。
希望有人能给出明确的解释。
ApplicationWindow {
width: 640
height: 480
ScrollView {
id: scroll // add an id
height: 100
width: 100
ColumnLayout{
Rectangle {
id: rect // add an id
color: "red"
width: 50
height: 50
MouseArea {
parent: scroll // specify the `visual parent`
anchors.fill: rect // fill `object parent`
onWheel: {
console.log("onWheel"); // now it works
}
onClicked: {
console.log("onClicked"); // it works
}
}
}
Repeater {
model: 30
Text{ text: index }
}
}
}
}