Qt 怎么获取指定坐标的控件
时间: 2024-05-23 15:15:33 浏览: 59
您可以使用QWidget的childAt()函数来获取指定坐标下的控件。该函数返回指定坐标下的子控件指针,如果该点不在任何子控件上,则返回控件本身的指针。以下是一个示例代码:
QWidget *widget = QApplication::widgetAt(QCursor::pos());
if (widget)
{
QPoint point = widget->mapFromGlobal(QCursor::pos());
QWidget *childWidget = widget->childAt(point);
if (childWidget)
{
// 处理子控件
}
else
{
// 处理控件本身
}
}
相关问题
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()函数获取控件在屏幕中的绝对坐标。例如,以下代码可以获取名为widget的QWidget控件的绝对坐标:
```
QPoint globalPos = widget->mapToGlobal(QPoint(0, 0));
int x = globalPos.x();
int y = globalPos.y();
```
其中,QPoint(0, 0)表示获取控件左上角的坐标,mapToGlobal()函数将控件的坐标转换为屏幕中的绝对坐标。
阅读全文