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