gpt4 book ai didi

qt - 是否可以在QML中获取mouseX,mouseY下的任何子组件

转载 作者:行者123 更新时间:2023-12-05 02:15:20 28 4
gpt4 key购买 nike

我想知道 Window 是否有一些子元素。是否有可能获得哪个 child 在其 MouseArea 的当前 x 和 y 下?

最佳答案

解决这个问题的策略是使用方法mapToGlobal()将鼠标获取的坐标转换为全局坐标,然后使用方法mapFromGlobal()来将这些全局坐标转换为每个 Item 的局部坐标,最后使用 contains() 来验证该点是否在 Item 内部。要获得 child ,您必须使用 children() 方法。

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)
}
}

...

}

关于qt - 是否可以在QML中获取mouseX,mouseY下的任何子组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52107412/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com