如何获得VNC连接状态?

时间:2017-11-23 08:41:12

标签: linux qt qt4 vnc vnc-server

我一直在寻找一种方法让我的Qt应用程序知道VNC连接是否处于活动状态。

我如何/可以获得VNC连接状态?

这是一个嵌入式Linux应用程序。

1 个答案:

答案 0 :(得分:0)

一个起点是在src/plugins/gfxdrivers/vnc/qscreenvnc_p.h查看Qt来源;我们声明了一个类QVNCServer,它还定义了isConnected()方法,它似乎完全符合您的需要。

然而,关键的一点是从应用程序代码访问该方法;可以从文件名后缀_p中扣除,该头中的类是私有的(读取:内部)到Qt库而不是公共接口的一部分。因此,它们没有在参考文献中记录,我还没有找到一个公共方法来获取当前QVNCServer对象,也没有找到任何其他可以提供指向该对象的指针的VNC相关实例。

我的建议是你从src/plugins/gfxdrivers/vnc/qscreenvnc_qws.h中的相关公共接口开始,它将服务器类作为QProxyScreen子类的一部分进行合并,然后从那里开始工作以了解VNC服务器的方式创建实例,并处理指向它的指针。您可以向QVNCScreen接口添加一个方法,该方法允许您从应用程序获取连接状态。但是,您必须修补Qt源并重建库。

在应用程序代码中获取QScreen对象很简单:

foreach(const QScreen* s, QScreen::instance()->subScreens())
{
    if(s->classId() == QScreen::VNCClass)
        //Here you can cast the screen instance and call a method on it
}