1

我必须将组件 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
                    }
                }
            }
        }
    }
}
4

2 回答 2

3

这实际上是 Qt 中的一个错误:

这正在解决:

于 2014-05-02T11:14:01.320 回答
1

我找到了解决它的方法,但我无法正确解释它。:(

本文档说明了 and 的概念visual parentobject 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 }
            }
        }
    }  
}
于 2013-11-26T01:49:52.230 回答