,应该调用QGuiApplication的函数来进行坐标转换,正确代码如下:
// 获取 QWidget 所在的屏幕 QScreen *screen = QGuiApplication::screenAt(widget->mapToGlobal(QPoint(0, 0)));
// 获取屏幕几何信息 QRect screenGeometry = screen->geometry();
// 将 QWidget 的位置从全局坐标系映射到当前屏幕坐标系 QPoint widgetPos = widget->mapToGlobal(QPoint(0, 0)); QPoint newPos = QGuiApplication::topLevelAt(widgetPos)->mapFromGlobal(widgetPos);
// 设置在当前屏幕上显示 QWidget 的位置和大小 widget->setGeometry(newPos.x(), newPos.y(), screenGeometry.width(), screenGeometry.height());
// 显示 QWidget widget->show();