Qt 获取控件的绝对坐标
时间: 2023-07-10 13:28:01 浏览: 80
可以使用QWidget的mapToGlobal()函数获取控件在屏幕中的绝对坐标。例如,以下代码可以获取名为widget的QWidget控件的绝对坐标:
```
QPoint globalPos = widget->mapToGlobal(QPoint(0, 0));
int x = globalPos.x();
int y = globalPos.y();
```
其中,QPoint(0, 0)表示获取控件左上角的坐标,mapToGlobal()函数将控件的坐标转换为屏幕中的绝对坐标。
相关问题
Qt 获取控件所在坐标系中的坐标
要获取一个控件在它的父控件或窗口坐标系中的坐标,可以使用QWidget的mapToParent()或mapToGlobal()函数。
mapToParent()函数将控件的坐标转换为它的父控件坐标系中的坐标,例如:
```cpp
QPoint widgetPos = myWidget->pos(); // 获取控件在它的父控件坐标系中的位置
QPoint parentPos = myWidget->parentWidget()->pos(); // 获取父控件在窗口坐标系中的位置
QPoint posInParent = myWidget->mapToParent(widgetPos); // 将控件的位置转换为父控件坐标系中的位置
QPoint posInWindow = posInParent + parentPos; // 将父控件的位置加上控件在父控件坐标系中的位置,得到控件在窗口坐标系中的位置
```
mapToGlobal()函数将控件的坐标转换为窗口坐标系中的坐标,例如:
```cpp
QPoint widgetPos = myWidget->pos(); // 获取控件在它的父控件坐标系中的位置
QPoint globalPos = myWidget->mapToGlobal(widgetPos); // 将控件的位置转换为窗口坐标系中的位置
```
Qt获取控件相对于屏幕坐标
可以使用 QWidget::mapToGlobal() 函数将控件的坐标转换为相对于屏幕的坐标。具体代码如下:
QPoint globalPos = widget->mapToGlobal(widget->pos());
int x = globalPos.x();
int y = globalPos.y();