Qt 5.1没有显示器的Q应用程序-QXcbConnection:无法连接到显示器
Qt 5.1 QApplication Without Display - QXcbConnection: Could not connect to display
我正在使用Qt5.1,并试图创建一个没有显示的QApplication。我需要用QPainter绘制文本,所以我需要使用QApplication(或QGuiApplication),否则我会得到一个segfault。
该应用程序在Qt4.8中运行良好,但在无头版本的Ubuntu上在Qt5.1中失败,错误为:
"QXcbConnection:无法连接到显示器"。
在Qt4.8中,我能够使用以下带有GUIenabled=false的构造函数来创建一个不需要显示的QApplication:
QApplication::QApplication(int&argc,char**argv,bool GUI启用)
在Qt5.1中,QApplication的构造函数不再具有GUI启用标志。
我简要地扫描了源代码,在QApplication构造函数中似乎确实有一个标志,但没有记录该标志中可以使用的选项。使用"false"无效。
如何在没有显示器的情况下创建QApplication?有没有其他方法可以告诉QApplication GUIenabled=false?或者,我可以创建一个在QImage上使用QPainter绘制文本时不会出错的QCoreApplication吗?
是的,这是Qt 3(?)在Qt 5中消失的东西。请尝试使用-platform offscreen
命令行选项运行应用程序。
请注意,您不需要QApplication
或链接到QtWidgets
来绘制QImage
,使用QGuiApplication
(并链接到QtGui
)就足够了。
如果你想创建一个没有GUI的应用程序,你需要使用QCoreApplication
而不是QApplication
。
刚刚遇到了同样的问题。真的很烦人,至少它不是一个编译错误。我的解决方案只是使用指针和堆对象,比如
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();
- 如何在qt中同步应用程序和显示器的刷新率?
- C++列出屏幕以在第二台显示器中显示图像
- 使用多个显示器 - XOpenDisplay(NULL) 有时无法获取窗口的当前显示吗?
- 自由过剩(某些东西):无法打开显示器
- 管理多个显示器
- 为什么我的串行串行在Arduino IDE上通过串行显示器进行两次打印
- 如何使用OpenCV在不同的显示器中显示不同的窗口
- 获取有关 X11 中离鼠标光标最近的显示器的信息
- 显示器在 Ubuntu 上使用 OpenGL 闪烁
- 如何在液晶显示器上显示粗体字
- 如何处理 KDE5 等离子体中第二个显示器的连接
- 如何拆分在多个8位显示器上显示的值
- Allegro 5:在大分辨率显示器中处理小精灵尺寸
- 如何在2D中构建显示器
- 如何区分外接显示器和笔记本电脑屏幕本身?
- 使用不同的显示器打开
- 窗口多个显示器位置
- 多显示器环境中的鼠标换行
- 如何使用Qt/C++和各种显示器拍摄打印屏幕
- Qt:如何将AA_UseHighDpiPixmaps用于两台显示器