首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt5.1没有显示的QApplication - QXcbConnection:无法连接到显示

Qt5.1没有显示的QApplication - QXcbConnection:无法连接到显示
EN

Stack Overflow用户
提问于 2013-07-31 19:27:19
回答 3查看 27.8K关注 0票数 22

我正在使用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?

EN

回答 3

Stack Overflow用户

发布于 2013-07-31 19:56:02

是的,那是一个Qt 3 (?)尝试使用-platform offscreen命令行选项运行应用程序。

注意,您不需要QApplication或链接到QtWidgets就可以使用QImage,使用QGuiApplication (并链接到QtGui)就足够了。

票数 25
EN

Stack Overflow用户

发布于 2013-08-01 10:26:32

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

票数 5
EN

Stack Overflow用户

发布于 2022-05-11 04:54:42

同样的问题。非常恼人的是,它至少不是编译错误。我的解决方案只是使用指针和堆对象,

代码语言:javascript
复制
   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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17979185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档