Как получить статус подключения 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
}