【发布时间】:2014-06-13 21:20:15
【问题描述】:
我今天从一个包含的示例中找到了如何使用 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
这找到了我的两个显示器,但保存的图像都是主显示器的屏幕截图,我不知道如何获取其他显示器。我已经玩了几个小时了,但仍然无法弄清楚。那么有人可以帮帮我吗?
【问题讨论】:
-
看起来像一个 Qt 错误。如果您仍然可以在 Qt 5.3 上重现,请提交一份大报告。
-
你可以试试这个(在一次grabWindow()调用中抓取所有屏幕):stackoverflow.com/a/51518556/7556787
标签: c++ qt qt5 screenshot desktop