我正在使用Qt5.1,我试图创建一个没有显示的QApplication。我需要用QPainter绘制文本,所以我需要使用QApplication (或QGuiApplication),否则就会出现分段错误。
该应用程序在Qt4.8中运行良好,但在Qt5.1中,Ubuntu的无头版本出现了错误:
"QXcbConnection:无法连接到显示“。
在Qt4.8中,我能够使用GUIenabled = false的以下构造函数来创建不需要显示的QApplication:
QApplication::QApplication ( int & argc,char ** argv,bool GUIenabled )
在Qt5.1中,QApplication的构造函数不再具有GUIenabled标志。
我对源代码进行了简短的扫描,在QApplication构造函数中确实有一个标志,但是对于在这个标记中可以使用哪些选项,它是没有文档的。使用"false“不起作用。
如何在没有显示的情况下创建QApplication?有其他方法可以告诉QApplication GUIenabled = false吗?或者,我是否可以创建一个在QCoreApplication上使用QPainter绘制文本时不会出现分段错误的QImage?
发布于 2013-07-31 19:56:02
是的,那是一个Qt 3 (?)尝试使用-platform offscreen命令行选项运行应用程序。
注意,您不需要QApplication或链接到QtWidgets就可以使用QImage,使用QGuiApplication (并链接到QtGui)就足够了。
发布于 2013-08-01 10:26:32
如果您想要创建一个没有GUI的应用程序,您需要使用QCoreApplication而不是QApplication。
发布于 2022-05-11 04:54:42
同样的问题。非常恼人的是,它至少不是编译错误。我的解决方案只是使用指针和堆对象,
QCoreApplication* app = 0;
Display* display = XOpenDisplay(NULL);
if (display)
{
XCloseDisplay(display);
app = new QApplication(argc, argv);
qobject_cast<QApplication*>(app)->setQuitOnLastWindowClosed(false);
}
else
{
app = new QCoreApplication(argc, argv);
}
return app->exec();https://stackoverflow.com/questions/17979185
复制相似问题