C++ Qt 5.1不带显示器的QApplication-QXcbConnection:无法连接到显示器

C++ Qt 5.1不带显示器的QApplication-QXcbConnection:无法连接到显示器,c++,qt,qt5,C++,Qt,Qt5,我正在使用Qt5.1,我正在尝试创建一个没有显示的QApplication。我需要使用QPainter绘制文本,所以我需要使用QApplication(或QGUI应用程序),否则我会得到一个segfault 该应用程序在Qt4.8中运行良好,但在Ubuntu无头版本的Qt5.1中失败,错误如下: “QXcbConnection:无法连接到显示器” 在Qt 4.8中,我能够使用GUIenabled=false的以下构造函数来创建不需要显示的QApplication: QApplication::Q

我正在使用Qt5.1,我正在尝试创建一个没有显示的QApplication。我需要使用QPainter绘制文本,所以我需要使用QApplication(或QGUI应用程序),否则我会得到一个segfault

该应用程序在Qt4.8中运行良好,但在Ubuntu无头版本的Qt5.1中失败,错误如下:

“QXcbConnection:无法连接到显示器”

在Qt 4.8中,我能够使用GUIenabled=false的以下构造函数来创建不需要显示的QApplication:

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

在Qt5.1中,QApplication的构造函数不再具有GUI启用标志

我简要地扫描了源代码,QApplication构造函数中似乎有一个标志,但没有记录在该标志中可以使用哪些选项。使用“false”不起作用

如何在没有显示器的情况下创建QApplication?是否有其他方法告诉QApplication GUIenabled=false?或者,我可以创建一个QCoreApplication,当在QImage上使用QPainter绘制文本时,它不会出现故障吗?

是的,这是一个Qt3(?)的东西,在Qt5中消失了。尝试使用
-platform offscreen
命令行选项运行应用程序


请注意,您不需要
QApplication
或链接到
QtWidgets
就可以使用
QGuiApplication
(并链接到
QtGui
)来利用
QImage

如果您想创建一个没有GUI的应用程序,您需要使用
QCoreApplication
而不是
QApplication

使用
QGuiApplication
-platform offscreen
命令行选项,我得到错误:
无法加载平台插件“offscreen”。可用的平台有:xcb
I静态地从源代码编译Qt。这就是问题所在吗?我设法使
-platform offscreen
正常工作,但随后出现错误
QFontDatabase:找不到字体目录'/***/lib/fonts'-Qt安装是否正确?
。我尝试了
-platformminimal
,但出现了相同的错误。这听起来像是构建中的问题,或者是Qt中的错误。尝试将
QT_QPA_FONTDIR
env变量设置为该目录的正确路径。我猜
屏幕外
插件没有完全使用fontconfig…当试图在运行无头linux的Jenkins服务器上测试Qt GUI时,此解决方案非常有用。使用
检查TESTARGS=“-platform offscreen”
运行Qt测试,并从.pro项目文件中删除QtCreator为您放入的
QT-=gui
行。我无法使用QCoreApplication,因为我需要使用QPainter绘制文本。如果我使用QCoreApplication,当我尝试在QImage中绘制文本时会出现分段错误,因此我需要使用QApplication或QGuiApplication。在/tmp中删除文件后,我遇到了这个问题。