使用 Qt C++ 截图
Take screenshot with Qt C++
我正在尝试使用我的应用程序截屏。但是我收到以下错误消息:
QPixmap: Must construct a QGuiApplication before a QPixmap
我的程序在后台运行,我不需要 GUI。我将如何创建 "QGuiApplication" 然后永久隐藏 window?或者是否有另一种无需创建 GUI 即可截取屏幕截图的方法?
我正在使用以下代码截取屏幕截图:
QScreen *screen;
QPixmap qpx_pixmap;
screen = QGuiApplication::primaryScreen();
qpx_pixmap = screen->grabWindow(0);
screenshotTarget = dir.path() + "/" + QDateTime::currentDateTime().toString("dddd hh:mm:ss");
qpx_pixmap.save(screenshotTarget);
在启动时创建 QGuiApplication
的实例,在 创建 QPixmap
之前。您不需要同时创建 GUI。 QGuiApplication
本身不会创建任何 windows 或任何可见的东西。
在 main()
:
的开头是个好地方
int main(int argc, char* argv[])
{
QGuiApplication app(argc, argv);
// ...
它也适用于 QApplication
,因为它继承自 QGuiApplication
。它只是提供创建基于 QWidget
的对象所需的额外内容,而您不需要这些内容。重要的是 QGuiApplication
对象是在 之前 创建的 QPixmap
.
最后,您需要告诉 grabWindow()
要抓取哪个部分。要抓取整个屏幕,请使用:
auto geom = screen->geometry();
qpx_pixmap = screen->grabWindow(0, geom.x(), geom.y(), geom.width(), geom.height());
我正在尝试使用我的应用程序截屏。但是我收到以下错误消息:
QPixmap: Must construct a QGuiApplication before a QPixmap
我的程序在后台运行,我不需要 GUI。我将如何创建 "QGuiApplication" 然后永久隐藏 window?或者是否有另一种无需创建 GUI 即可截取屏幕截图的方法?
我正在使用以下代码截取屏幕截图:
QScreen *screen;
QPixmap qpx_pixmap;
screen = QGuiApplication::primaryScreen();
qpx_pixmap = screen->grabWindow(0);
screenshotTarget = dir.path() + "/" + QDateTime::currentDateTime().toString("dddd hh:mm:ss");
qpx_pixmap.save(screenshotTarget);
在启动时创建 QGuiApplication
的实例,在 创建 QPixmap
之前。您不需要同时创建 GUI。 QGuiApplication
本身不会创建任何 windows 或任何可见的东西。
在 main()
:
int main(int argc, char* argv[])
{
QGuiApplication app(argc, argv);
// ...
它也适用于 QApplication
,因为它继承自 QGuiApplication
。它只是提供创建基于 QWidget
的对象所需的额外内容,而您不需要这些内容。重要的是 QGuiApplication
对象是在 之前 创建的 QPixmap
.
最后,您需要告诉 grabWindow()
要抓取哪个部分。要抓取整个屏幕,请使用:
auto geom = screen->geometry();
qpx_pixmap = screen->grabWindow(0, geom.x(), geom.y(), geom.width(), geom.height());