2013-07-31 105 views
11

我正在使用Qt5.1,我試圖創建一個沒有顯示的QApplication。我需要使用QPainter繪製文本,所以我需要使用QApplication(或QGuiApplication),否則我會遇到段錯誤。Qt 5.1 QApplication Without Display - QXcbConnection:無法連接到顯示器

應用在Qt4.8運行良好,但未能在Qt5.1在Ubuntu的無頭版本的錯誤:

"QXcbConnection: Could not connect to display".

在Qt 4.8,我可以使用下面的構造函數GUIenabled = false,以創建並不需要一個顯示器的QApplication:

QApplication::QApplication (int & argc, char ** argv, bool GUIenabled)

在Qt5.1,爲QApplication的構造函數不再具有GUIenabled標誌。

我簡要地掃描了源代碼,並且似乎在QApplication構造函數中有一個標誌,但它沒有文檔說明該標誌中可以使用哪些選項。使用「false」不起作用。

如何在不顯示的情況下創建QApplication?有告訴QApplication GUIenabled = false的另一種方法嗎?或者,我可以創建一個QCoreApplication,它在QImage上使用QPainter繪製文本時不會出現段錯誤?

+0

刪除/ tmp中的文件後,我遇到了這個問題。 – Geremia

回答

15

是的,這是一個Qt 3(?)的東西,在Qt 5中沒了。嘗試使用-platform offscreen命令行選項運行應用程序。

注意,你不需要QApplication或鏈接到QtWidgets在一個QImage只是畫畫,使用QGuiApplication(並鏈接到QtGui)就足夠了。

+2

使用'QGuiApplication'和'-platform offscreen'命令行選項時,出現以下錯誤: '無法加載平臺插件「offscreen」。可用的平臺是: xcb' 我從源靜態編譯Qt。這是問題嗎? – Vincent

+0

我設法讓'-platform offscreen'工作,但後來我得到錯誤'QFontDatabase:找不到字體目錄'/ ***/lib/fonts' - 是否正確安裝Qt?'。我試過'-platform minimal',但有同樣的錯誤。 – Vincent

+0

這聽起來像是你的構建中的一個問題,或者是Qt中的一個錯誤。嘗試將'QT_QPA_FONTDIR' env變量設置爲該目錄的正確路徑。我猜這個'offscreen'插件不太適合使用fontconfig ... – peppe

1

如果你想創建一個沒有GUI的應用程序,你需要使用QCoreApplication而不是QApplication

+0

我無法使用QCoreApplication,因爲我需要使用QPainter繪製文本。如果我使用QCoreApplication,當我嘗試在QImage中繪製文本時出現分段錯誤,所以我需要使用QApplication或QGuiApplication。 – Vincent