Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 是否可以在QML中的mouseX和mouseY下获取任何子组件_Qt_Qml_Qt5 - Fatal编程技术网

Qt 是否可以在QML中的mouseX和mouseY下获取任何子组件

Qt 是否可以在QML中的mouseX和mouseY下获取任何子组件,qt,qml,qt5,Qt,Qml,Qt5,例如,我想知道窗口是否有一些子元素。是否有可能获取鼠标当前x和y下的子对象?解决此问题的策略是使用mapToGlobal方法将鼠标获得的坐标转换为全局坐标,然后使用mapFromGlobal方法将每个项目的全局坐标转换为局部坐标,最后,使用contains验证点是否在项目内。要获取子对象,必须使用children方法 解决此问题的策略是使用方法mapToGlobal将鼠标获得的坐标转换为全局坐标,然后使用方法mapFromGlobal将每个项目的全局坐标转换为局部坐标,最后使用contains验

例如,我想知道窗口是否有一些子元素。是否有可能获取鼠标当前x和y下的子对象?

解决此问题的策略是使用mapToGlobal方法将鼠标获得的坐标转换为全局坐标,然后使用mapFromGlobal方法将每个项目的全局坐标转换为局部坐标,最后,使用contains验证点是否在项目内。要获取子对象,必须使用children方法


解决此问题的策略是使用方法mapToGlobal将鼠标获得的坐标转换为全局坐标,然后使用方法mapFromGlobal将每个项目的全局坐标转换为局部坐标,最后使用contains验证点是否位于项目内部。要获取子对象,必须使用children方法


如果不需要递归地获取子级,可以使用window.contentItem.childAtmouseX,mouseY.like items+=连接字符串。我来试试这个,比如说,我怎么才能买到最后一件?如果我做了results[results.length-1],我会得到,但我期待的是QQuickRectangle0x282db10,我只得到了,这是上面指针中的最后一个字符。toString如果我想给它命名,感谢您再次查看并编辑您的答案:如果不需要递归获取子对象,可以使用window.contentItem.childAtmouseX,mouseY.items+=似乎正在连接字符串。我来试试这个,比如说,我怎么才能买到最后一件?如果我做了results[results.length-1],我会得到,但我期待的是QQuickRectangle0x282db10,我只得到了,这是上面指针中的最后一个字符。toString如果我想给它命名,感谢您再次查看并编辑您的答案:
Window {
    id: window
    visible: true
    width: 640
    height: 480

    function itemsFromGlobalPosition(root, globalPos){
        var items = []
        for(var i in root.children){
            var children = root.children[i]
            var localpos = children.mapFromGlobal(globalPos.x, globalPos.y)
            if(children.contains(localpos)){
                items.push(children)
            }
            items = items.concat(itemsFromGlobalPosition(children, globalPos))
        }
        return items;
    }


    MouseArea{
        id: ma
        anchors.fill: parent
        onClicked: {
            var results = itemsFromGlobalPosition(window.contentItem, ma.mapToGlobal(mouseX, mouseY))
            console.log("results: ", results)
        }
    }

     ...

}