Как получить статус подключения VNC?

Я искал способ для моего приложения Qt узнать, активно ли соединение VNC.

Как / можно получить статус соединения VNC?

Это встроенное приложение для Linux.

1 ответ

Отправной точкой было бы изучить источники Qt в src/plugins/gfxdrivers/vnc/qscreenvnc_p.h; там класс 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
}
Другие вопросы по тегам