在Qt中使用QDesktopWidget截取多个屏幕的屏幕截图

时间:2015-02-04 18:25:39

标签: c++ qt screenshot

我正在使用Qt-5.2和Win7。

该应用程序使用两个显示器,我想拍摄包含两个屏幕的屏幕截图。 QGuiApplication :: screens()返回两个QScreen对象的列表,当我拍摄主屏幕截图时,就可以了。但现在我需要两者的截图,所以QDesktopWidget似乎是一个不错的选择。 QDesktopWidget对象是虚拟对象,因此它处理虚拟桌面中的两个屏幕。

当我使用它时,pixmap正确生成。

QPixmap pm = some_widget->grab();

但是当我尝试使用桌面小部件时,我只得到一张灰色图像。

QPixmap pm = QApplication::desktop()->grab();

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

我不打算使用它,因为它已经过时了,但我设法以这种方式做我想做的事:

QDesktopWidget* dw = QApplication::desktop()    
QPixmap pixmap = QPixmap::grabWindow( dw->winId(), 0, 0, dw->width(), dw->height() );