Qt相当于gtk_init_check

时间:2015-02-15 11:09:12

标签: linux qt

我需要检查X会话是否已经根据该值返回一个值,因此我的应用程序可以决定创建窗口。

在Gtk + 2中gtk_init_check,如果无法连接到X会话,则返回-1。

Qt的等价物是什么?

2 个答案:

答案 0 :(得分:1)

据我所知,Qt并不是那样的。你要么

  1. 创建QGuiApplication(如果使用小部件,则创建QApplication),然后在QApplication的构造函数返回之前连接并验证X会话正在工作,或者
  2. 创建一个QCoreApplication,然后就没有可用的图形。
  3. 具有默认X子系统(xcb)的QGuiApplication将从libqxcb发出错误QXcbConnection: Could not connect to display并发出SIGABRT。如果您尝试使用不同的模块,例如offscreen使用类似构造,

    your_application --platform offscreen
    

    然后GUI应用程序将启动,但您不再连接到X.如果您希望获得X会话信息,请查看X11Extras模块,

    http://doc.qt.io/qt-5/qx11info.html

    请记住,如果您使用的是QCoreApplication或未连接到X,则会因为您未连接到X服务器而返回nullptr以获取X连接信息。

答案 1 :(得分:1)

the other answer提及QGuiApplication并假设Linux + X11的补充中,您可以在实践中简单地测试getenv("DISPLAY")返回非空字符串。您也可以 - 而是 - 使用XOpenDisplay(后跟XCloseDisplay

顺便说一句,我不知道Qt在非X11显示器上是如何工作的,即WaylandMir