Gridview和MouseArea内部发生冲突

时间:2015-05-13 07:41:38

标签: qt gridview qml mouse

我有这样的代码:

import QtQuick 2.0
import QtQuick.Window 2.0

Window {
    visible: true
    width: 500
    height: 500

    GridView {
        id: grid
        anchors.fill: parent
        cellWidth: 30
        cellHeight: 30
        model: 120
        delegate: Rectangle {
            width: grid.cellWidth
            height: grid.cellHeight
            color: "grey"
        }

        MouseArea {
            anchors.fill: parent
            onPressed: console.info(">> PRESSED triggered")
            onMouseXChanged: console.info(">> " + mouseX)
            onReleased: console.info(">> RELEASED triggered")
            preventStealing: true
            propagateComposedEvents: true
        }
    }
}

当我按住鼠标按钮并严格沿X轴移动时,MouseArea中的所有信号都会触发。但是当鼠标也沿着Y轴向上或向下移动时,onMouseXChangedonReleased信号不会触发。似乎GridView拦截MouseArea的信号,从MouseArea窃取它们。如何让它们协同工作:GridView内置MouseArea

1 个答案:

答案 0 :(得分:0)

true

中将preventStealing设为MouseArea
  

此属性保存鼠标事件是否可能从此MouseArea中被盗。

     

如果将MouseArea放置在过滤子鼠标事件(例如Flickable)的项目中,则如果父项目识别出手势,则鼠标事件可能会从MouseArea中被盗。一个轻弹的手势。如果preventStealing设置为true,则任何项都不会窃取鼠标事件。