QTアプリケーションがVNC接続がアクティブかどうかを知る方法を探しています。QT VNC接続ステータス
どうすればVNC接続ステータスを取得できますか?
これは組み込みLinuxアプリケーションです。
QTアプリケーションがVNC接続がアクティブかどうかを知る方法を探しています。QT VNC接続ステータス
どうすればVNC接続ステータスを取得できますか?
これは組み込みLinuxアプリケーションです。
出発点はQtのソースをsrc/plugins/gfxdrivers/vnc/qscreenvnc_p.h
で調べることです。クラスQVNCServer
が宣言されており、これはあなたが必要とするものを正確に行うと思われる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
}