20

我正在使用 Qt5.1,我正在尝试创建一个没有显示的 QApplication。我需要用 QPainter 绘制文本,所以我需要使用 QApplication(或 QGuiApplication),否则会出现段错误。

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

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

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

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

在 Qt5.1 中,QApplication 的构造函数不再具有 GUIenabled 标志。

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

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

4

2 回答 2

24

是的,这是 Qt 3(?)在 Qt 5 中消失的东西。尝试使用-platform offscreen命令行选项运行您的应用程序。

请注意,您不需要QApplication或链接到QtWidgets只需在 a 上绘制QImage,使用QGuiApplication(和链接到QtGui)就足够了。

于 2013-07-31T19:56:02.870 回答
5

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

于 2013-08-01T10:26:32.477 回答