[英]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.