Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在linux上使用Qt抓取窗口?_Qt_Printscreen - Fatal编程技术网

如何在linux上使用Qt抓取窗口?

如何在linux上使用Qt抓取窗口?,qt,printscreen,Qt,Printscreen,在windows中,这非常简单: auto pixmap = qApp->screens().at(0)->grabWindow(QDesktopWidget().winId()); 但是grabWindow在linux上不起作用。我试着做如下事情: QScreen *screen = QGuiApplication::primaryScreen(); auto pixmap = QPixmap::grabWindow(0); 但是没有好结果 QScreen *screen =

在windows中,这非常简单:

auto pixmap = qApp->screens().at(0)->grabWindow(QDesktopWidget().winId());
但是grabWindow在linux上不起作用。我试着做如下事情:

QScreen *screen = QGuiApplication::primaryScreen();
auto pixmap = QPixmap::grabWindow(0);
但是没有好结果

QScreen *screen = QGuiApplication::primaryScreen();
QPixmap pixmap = screen->grabWindow(0);

如果屏幕有效,则应工作。您可以参考位于

的shootScreen方法,这可能是“如何在Linux上从窗口制作屏幕快照?”。Linux GUI(不在我们的应用程序中)的问题是,系统GUI可能会因Linux甚至其版本的不同而大不相同。这是GNOME,现在是其他东西。所以,这就是为什么Qt不一定能够提供帮助。你说的“没有好结果”是什么意思?请注意,由于Qt5,QPixmap::grabWindow已被弃用,您应该改为使用。@musicamante我使用QScreen::grabWindow(),但当我检查pixmap大小高度时,我得到0。