我一直在寻找一种方法让我的Qt应用程序知道VNC连接是否处于活动状态。
我如何/可以获得VNC连接状态?
这是一个嵌入式Linux应用程序。
答案 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
}