QGuiApplication没有screenAt
时间: 2024-04-24 19:23:25 浏览: 23
非常抱歉,我之前的回答有误。在 Qt 中,确实没有直接的方法来获取当前应用程序窗口所在的屏幕。不过,你可以通过使用 `QScreen` 类的 `geometry()` 方法和 `QApplication` 类的 `topLevelWidgets()` 方法结合起来来实现这个目的。
以下是一个示例代码:
```cpp
#include <QApplication>
#include <QScreen>
#include <QWidget>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 获取当前应用程序窗口的位置
QWidget *mainWindow = qApp->topLevelWidgets().first();
QPoint windowPos = mainWindow->geometry().topLeft();
// 获取当前应用程序所在的屏幕
QScreen *currentScreen = QGuiApplication::screenAt(windowPos);
// 输出屏幕的矩形区域信息
qDebug() << "Screen Geometry:" << currentScreen->geometry();
return app.exec();
}
```
在上述代码中,我们使用 `qApp->topLevelWidgets().first()` 获取当前应用程序的主窗口指针,并使用 `geometry()` 方法获取该窗口的矩形区域。然后,使用 `QGuiApplication::screenAt()` 方法根据窗口的位置来获取当前屏幕的信息。
最后,我们通过 `qDebug()` 输出了当前屏幕的矩形区域信息。
请注意,如果你有多个窗口,你需要根据你想要获取屏幕信息的窗口来调整 `topLevelWidgets()` 方法的参数。