Qt获取控件相对于屏幕坐标
时间: 2023-04-12 12:01:20 浏览: 1111
可以使用 QWidget::mapToGlobal() 函数将控件的坐标转换为相对于屏幕的坐标。具体代码如下:
QPoint globalPos = widget->mapToGlobal(widget->pos());
int x = globalPos.x();
int y = globalPos.y();
相关问题
Qt获取相对于父控件的坐标
要获取一个Qt控件相对于其父控件的坐标,可以使用QWidget类的geometry()方法。
例如,如果您有一个QWidget控件parent_widget和一个QWidget控件child_widget,您可以使用以下代码获取child_widget相对于parent_widget的坐标:
```cpp
QRect child_geometry = child_widget->geometry();
QRect parent_geometry = parent_widget->geometry();
int relative_x = child_geometry.x() - parent_geometry.x();
int relative_y = child_geometry.y() - parent_geometry.y();
```
这样,relative_x和relative_y将分别是child_widget相对于parent_widget的x和y坐标。
qt 获取控件相对于程序界面的位置以及相对于屏幕的位置
在 Qt 中,可以使用 QWidget 类中的 mapTo 和 mapFrom 函数来获取控件相对于程序界面和屏幕的位置。
1. 获取控件相对于程序界面的位置:
```c++
QPoint pos = widget->mapToGlobal(QPoint(0, 0));
```
其中,widget 是需要获取位置的控件,mapToGlobal 函数将控件的坐标系转换为程序界面的坐标系,QPoint(0, 0) 表示控件左上角的位置。
2. 获取控件相对于屏幕的位置:
```c++
QPoint pos = widget->mapToGlobal(QPoint(0, 0));
```
与获取控件相对于程序界面的位置类似,mapToGlobal 函数将控件的坐标系转换为屏幕的坐标系。
需要注意的是,获取控件相对于屏幕的位置时,如果控件被其他窗口遮挡,那么获取的位置可能不准确,因为被遮挡的区域无法被显式地转换为屏幕坐标系。如果需要获取准确的控件位置,建议将窗口设置为 AlwaysOnTop,确保控件不会被遮挡。