[英]How to run a Qt application in headless mode (without showing my GUI)
我有一个基于QApplication
的 QT 应用程序,并假设我的应用程序具有复杂的 GUI( QDialog
, QMainWindow
...)。
我的应用程序可以以两种模式运行:
我想知道如何以无头模式启动应用程序(也就是说没有 GUI 可见)
从下面的一个非常基本的代码,我应该有什么论据来允许这个?
int main(int argc, char*argv[])
{
QApplication app(argc, argv);
// which option should I add to argv to run in headless mode
return app.exec();
}
这里有几个选项。 您要么需要 Qt 控制台应用程序,要么需要无头 GUI 应用程序。
你会发现真正在无头模式下运行 GUI 相当棘手。 这适用于您需要在没有安装 GUI 库的 Linux 系统中运行相同应用程序的情况,例如最小设置。 如果没有广泛的 xorg 和/或 EGL 库,您会发现这是不可能的。
但不要害怕,您可以通过使用 Qt VNC 平台插件或在Xvfb的帮助下以最小的影响做到这一点。 所以简而言之
$ QT_QPA_PLATFORM="vnc" ./my-app
和
$ ./my-app -platform vnc
你会发现你的软件有一个 GUI,但它在无头模式下运行,为了查看你只需使用任何 vncviewer 连接到它的 GUI。
与其他解决方案相同,您可以通过不显示 GUI 来隐藏它。
这与 VNC 非常相似,但你会得到一个完全 null output,无法进行 GUI 交互:
$ ./my-app -platform offscreen
你可以运行一个假的 Xorg 服务器并在那里运行东西。
export DISPLAY=:1
Xvfb :1 -screen 0 1024x768x16 &
./myapp &
从给定的解决方案中,我更喜欢屏幕外渲染,但是您的 Qt 编译可能没有插件,或者它可能需要 xcb 或 egl 库。 这是你的选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.