【问题标题】:How to get the VNC connection status?如何获取 VNC 连接状态?
【发布时间】:2018-09-18 22:52:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: linux qt qt4 vnc vnc-server


    【解决方案1】:

    一个起点是查看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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 2014-06-15
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多