2017-11-23 25 views
0

내 QT 응용 프로그램이 VNC 연결이 활성 상태인지 알 수있는 방법을 찾고 있습니다.QT VNC 연결 상태

어떻게 VNC 연결 상태를 얻을 수 있습니까?

이것은 임베디드 Linux 응용 프로그램입니다.

답변

0

출발점은 Qt 소스를 src/plugins/gfxdrivers/vnc/qscreenvnc_p.h에서 조사하는 것입니다. 그곳에는 클래스가 선언되어 있습니다.이 클래스는 isConnected() 메소드를 정의하여 사용자가 필요로하는 것만 정확하게 수행합니다.

그러나 중요한 점은 응용 프로그램 코드에서 해당 메서드에 액세스하는 것입니다. 파일 이름 접미사 _p에서 공제받을 수 있으므로 해당 헤더의 클래스는 공용 인터페이스의 일부가 아닌 Qt 라이브러리에 대한 개인용 (읽기 : 내부)입니다. 따라서 참조에 문서화되어 있지 않으며 현재 QVNCServer 개체를 가져 오는 공용 메서드 나 해당 개체에 대한 포인터를 제공 할 수있는 다른 VNC 관련 인스턴스를 찾지 못했습니다.

내 제안은 서버 클래스를 하위 클래스의 일부로 통합 한 관련 공용 인터페이스 인 src/plugins/gfxdrivers/vnc/qscreenvnc_qws.h부터 시작하여 앞으로 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 
}