我想出了如何使用 Qt5 从包含的示例中获取今天的桌面屏幕截图,该示例获取主屏幕,抓取它,然后保存它。

我在没有测试的情况下从 Python 翻译代码,所以如果有一个小的语法错误,那么是的,你知道。因此,我可以使用以下命令轻松截取主屏幕的屏幕截图:

QApplication a(argv, argc);

QScreen *screen = a.primaryScreen();

QPixmap screenshot = screen->grabWindow(0);

screenshot.save('screenshot.png', 'png');

这将(显然)截取主监视器的屏幕截图。问题是我需要截取所有显示器的屏幕截图。所以我想出了这个:
QList<QScreen*> screens = a.screens();
QScreen *screen;
QPixmap screenshot;

for(int i = 0; i < screens.length(); i++){
    screen = screens.at(i);
    screenshot = screen->grabWindow(0);
    screenshot.save(QString::number(i) + ".png", 'png');
}
//takes and saves two screenshots on my end

这找到了我的两个显示器,但保存的图像都是主显示器的屏幕截图,我不知道如何获取其他显示器。我已经玩了几个小时了,但仍然无法弄清楚。所以有人可以帮我吗?

最佳答案

我想出了一个解决这个问题的简单方法。最近在查看文档时,我发现“getWindow”方法的默认参数为

(x = 0, y = 0, width = -1, height = -1)

因此,无论我用什么屏幕调用 getWindow 方法,它都会给我相同的几何形状。所以要解决这个问题,很简单:
//Screen geometry
QRect g = screen->geometry();

//Take the screenshot using the geometry of the screen
QPixmap screenShot = screen->grabWindow(0, g.x(), g.y(), g.width(), g.height());

关于c++ - 使用 Qt5 截取完整桌面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24213942/

10-10 09:34