如果我有一个简单的、自包含的QML应用程序,我可以通过以下方式获取组件的绝对屏幕坐标:
Component.onCompeted: {
var l = myThing.mapToItem(null, 0, 0)
console.log("X: " + l.x + " y: " + l.y)
}
这里的myThing是文件中任何其他组件的id。然而,如果该文件被合并到另一个QML文件中并且定义的组件被重复使用,那么我就不能再获得屏幕坐标;我将得到相对于执行上述语句的组件的本地坐标。
如何获取物品的绝对屏幕坐标?
myThing.parent
进行了测试,如果父级 QML 元素填充整个窗口,则可以正常工作。如果这是您的根元素,则还可以使用myThing.parent.parent
。虽然不太好看且难以维护,但它确实有效。 - Simon Wartaimport
访问不同的QML。import "../Path/To/Parent/" as ParentOfMyThing
然后,应该可以使用以下内容:ParentOfMyThing.someId
- Alexander Borodulyaproperty Window vroot : id_root
,然后vroot
将在整个应用程序中可用。 - dtechItem
都应该有一个mapToGlobal
方法。如果您使用ApplicationWindow
创建窗口,则始终可以通过ApplicationWindow.contentItem
访问顶级Item
。我认为Window
也是一个附加属性,用于获取实例化您的Item
所在的窗口。(即,现在是这样。对于2014年的Qt可能会有所不同) - derM