Qt 5.1 QApplication Without Display - QXcbConnection: не удалось подключиться к дисплею

Я использую Qt5.1, и я пытаюсь создать QApplication без отображения. Мне нужно нарисовать текст с помощью QPainter, поэтому мне нужно использовать QApplication (или QGuiApplication), иначе я получаю segfault.

Приложение отлично работало в Qt4.8, но не работает в Qt5.1 в безголовой версии Ubuntu с ошибкой:

"QXcbConnection: Не удалось подключиться к отображению".

В 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, который не будет segfault при рисовании текста с QPainter на QImage?

Ответ 1

Да, это вещь Qt 3 (?), которая исчезла в Qt 5. Вместо этого попробуйте запустить приложение с помощью командной строки -platform offscreen.

Обратите внимание, что вам не нужно QApplication или ссылка на QtWidgets, чтобы просто рисовать на QImage, используя QGuiApplication (и ссылку на QtGui).

Ответ 2

Если вы хотите создать приложение без GUI, вам нужно использовать QCoreApplication вместо QApplication.