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
.