概念 - Qt Quick中的视觉坐标

Qt Quick 中视觉坐标概念的描述

项目坐标

Qt Quick 中使用的默认视觉坐标系统是项目坐标。这是一个笛卡尔坐标系,项目的左上角为 (0,0)。x 轴向右增长,y 轴向下增长,因此项目的右下角坐标为 (width, height)。

单个项目的位置是根据其父坐标系统指定的。这意味着从非兄弟项目读取x,y值可能需要转换,以将它们转换到相同的坐标系统中。当这种情况发生时,场景坐标通常被用作中间坐标系统。

场景坐标

场景坐标是指(0,0)对应于当前渲染场景的窗口左上角的坐标。场景坐标通常与窗口中根项目的项目坐标相同。

您可以使用感兴趣的坐标系上的函数将项目转换为场景坐标。请参阅mapFromItemmapToItem以转换为场景坐标或其他项目的坐标。

工作示例

下面的QML代码创建了一个正方形的排列,并添加了点以识别点:

Rectangle {
    width: 200
    height: 200
    color: "red"

    Rectangle {
        x: 100
        y: 100
        width: 100
        height: 100
        color: "blue"

        Rectangle {
            width: 50
            height: 50
            color: "green"
        }
    }
}
../_images/visual-coordinates-example.png

在这张图片中,黑点位于红色矩形的项目坐标中的(0,0)位置。如果红色矩形是场景的根项目,那么黑点也将在场景坐标中位于(0,0)位置。

蓝色矩形相对于红色矩形的左上角定位在白点 (100,100) 处。

绿色矩形没有指定x,y,因此其位置默认为(0,0)。由于它在父元素蓝色矩形的坐标系中位于(0,0),所以它位于该矩形的左上角。这与红色矩形坐标系中位于(100,100)的白点是同一个点。