QML坐标转换
- 版本
- 相关函数
版本
Qt5.15
相关函数
下面这些函数是隶属于Item的
/// Item
object mapFromGlobal(real x, real y)
object mapFromItem(Item item, rect r)
object mapFromItem(Item item, real x, real y, real width, real height)
object mapFromItem(Item item, point p)
object mapFromItem(Item item, real x, real y)
object mapToGlobal(real x, real y)
object mapToItem(Item item, rect r)
object mapToItem(Item item, real x, real y, real width, real height)
object mapToItem(Item item, point p)
object mapToItem(Item item, real x, real y)
值得注意的是mapFromGlobal
和mapToGlobal
的使用版本是自Qt5.7开始的
而mapFromItem
和mapToItem
是自Qt 5.15开始的
mapFrom和mapTo,
前者是指从被指向的item坐标系里的坐标参数,映射到使用者坐标系里的坐标是如何;
后者是指使用者坐标系里的坐标参数,映射到被指向的item坐标系里的坐标是如何。
打个调用示例:
Rectangle {id: rect1width: 100height: 100...Button {id: button1x: 50y: 52width: 30height: 30...
...
button1.mapToItem(rect1, 10, 12)
该函数用法是button1里QPointF(10, 12)这个坐标,在rect1里坐标是QPointF(0 + 50 + 10, 0 + 52 + 12)
button1.mapFromItem(rect1, 10, 12)
该函数用法是rect1里QPointF(10, 12)这个坐标,在button1里坐标是QPointF(0 - 50 + 10, 0 - 52 + 12)
button1.mapToGlobal(10, 12)
button1.mapFromGlobal(10, 12)
上面这两个与上同理,只是换成了Global,这个Global的对应对象就是根节点的Item所在坐标系,不过要注意的
是Window这个根节点,其的坐标系是整个屏幕的坐标系,而不是窗口的坐标系