Qt 坐标体系详解
x()、y()、topLeft()和bottomRight():返回的矩形位置信息使用的坐标系取决于QRect对象创建方式。QPainter ,默认 Viewport和Window坐标系重合,其原点 (0, 0) 处于绘制设备(像 QWidget、QPixmap 这类)的左上角位置,X 轴正方向朝右,Y 轴正方向朝下。以整个屏幕为参考,屏幕左上角是坐标原点 (0, 0) ,X 轴正方向向右,Y 轴
一、坐标系统分类
坐标值的单位通常是像素(px)。
1.窗口坐标
以窗口自身为参考,窗口左上角为坐标原点 (0, 0),X 轴正方向向右,Y 轴正方向向下。用于确定窗口内控件的位置、大小,以及窗口上绘图操作的位置。
2.全局坐标
以整个屏幕为参考,屏幕左上角是坐标原点 (0, 0) ,X 轴正方向向右,Y 轴正方向向下。可获取控件在屏幕上的绝对位置,以及在不同窗口间进行坐标转换。
通过QWidget的mapToGlobal()方法将窗口坐标转为全局坐标 ,mapFromGlobal()方法进行反向转换。
3.父 - 子坐标
子控件自身坐标系:用于子控件内部元素的定位和绘制,原点在子控件自身左上角。
父子控件关系下的坐标系:用于确定子控件在父控件中的位置,原点是父控件的左上角。仅涉及直接子类,依此类推。
4.视口和窗口坐标(绘图场景)
在使用 QPainter 绘图时,涉及视口(Viewport)和窗口(Window)的概念。视口是设备上的一个矩形区域(实际绘制区域),而窗口是逻辑上的坐标系统。通过设置视口和窗口,建立映射关系,描述坐标时使用窗口坐标。
二、相关函数与坐标系关系
QWidget 类相关函数
1.位置相关函数
- pos():返回部件相对于其父部件的位置,基于父 - 子坐标体系。
- mapToGlobal(const QPoint &pos):将部件内点(相对于自身坐标)转换为全局屏幕坐标。
- mapFromGlobal(const QPoint &pos):把全局屏幕坐标点转换为部件内坐标,即屏幕绝对位置转为相对于该部件左上角的相对位置。
2.QRect 类相关函数
x()、y()、topLeft()和bottomRight():返回的矩形位置信息使用的坐标系取决于QRect对象创建方式。若表示QWidget的几何信息,通常是相对于父部件的坐标体系;若在绘图场景中创建,可能是窗口坐标体系。
3.QPainter 类相关函数(视口和窗口坐标)
- 视口(Viewport):viewport()函数返回设备坐标体系下的视口矩形,决定绘图实际显示位置和大小。
- 窗口(Window):window()函数返回逻辑坐标体系下的窗口矩形,可自定义,与视口通过setViewport()和setWindow()方法建立映射。
QPainter ,默认 Viewport和Window坐标系重合,其原点 (0, 0) 处于绘制设备(像 QWidget、QPixmap 这类)的左上角位置,X 轴正方向朝右,Y 轴正方向朝下。
4.QCursor 类相关函数
- pos():返回鼠标指针位置,使用全局屏幕坐标体系。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)