3

Qt for Embedded Linuxをコンパイルしてインストール-qt-gfx-vncし、ラインで使用するようにしました./configure

次のコードでアプリケーションを起動します。

int argc = 1;
char *argv[] = { "appname", "-display", "VNC:0" };
QApplication app(argc, argv, QApplication::GuiServer);

オプションがないと"-display", "VNC:0"、アプリケーションは組み込みデバイスのディスプレイを使用して動作しますが、これらのオプションを使用するQVNCServerと、ポート5900でaが作成され、ディスプレイには何も表示されなくなります。UbuntuのRemoveDesktopViewerを使用して接続しようとして機能しません。画面が真っ暗になり、エラーメッセージは表示されません。

私のアプリケーションでは、GUIが埋め込みディスプレイに同時にレンダリングされている間アクティブなVNCサーバーが必要です。理想的には、アプリケーション内からVNCサーバーを有効/無効にできるようにもしたいと思います。また、ユーザー認証を行う必要があります。

Qtを使用してVNCサーバーと標準のqwsものを同時に実行することは可能ですか、それとも別の解決策を見つける必要がありますか?

4

1 に答える 1

7

The"QVNCServer created on port 5900"QtライブラリがQtVNCサーバーを含むようにコンパイルされたことを示します。QVNCServerは完全なVNCサーバーではありませんが、出力がネットワークインターフェイス上のVNCサーバーとして利用できるようになるQtディスプレイドライバーです。「VNCサーバー」は独立したプロセスではなく、一度に1つのVNCクライアントしか処理できず、32bppの深さで接続するVNCクライアントのみをサポートするという点で完全なVNCサーバーよりも単純です。私が使用しているQtバージョン(4.2.2)には、VNCクライアントがdepth = 8(多くのポータブルデバイスVNCクライアントのデフォルト)で接続しようとすると、QVNCServerがハングしているように見えるバグがあります。これは、QVNCサーバーへの接続に問題がある可能性があります。VNCクライアントが32ビット/24ビット/フルカラー/ハイカラーとして構成されていることを確認してください。

以下は、コマンドラインからQtアプリケーションを起動するためのパラメーターですが、例に示されているように、別のプログラムによって起動された場合も同じ文字列が機能します。

VNCディスプレイでのみアプリケーションを起動するには:

  appname -qws -display "VNC::"
  appname -qws -display "VNC::size=640x480:depth=32:0"

アプリケーションを起動して、ローカルLinuxフレームバッファー(/ dev / fb0)(私の場合はローカルディスプレイドライバーは「sm501」)とリモートVNCクライアントの両方で同じ出力を同時に表示するには、次を使用します。

  appname -qws -display "Multi: sm501: VNC::"

(ドキュメントからは明らかではありませんが、VNCでは2つのコロンを使用する必要がありました。)

ローカルディスプレイとVNCクライアントに異なるコンテンツを表示する最も簡単な方法は、それぞれが異なるディスプレイを指定する個別のLinuxプロセスを起動することです。異なるVNCポート番号でアプリケーションを起動することにより、複数のVNCクライアントをサポートできます。

  appname1 -qws                    --renders to the local display
  appname2 -qws -display VNC::0   --renders to VNC port 5900
  appname3 -qws -display VNC::1   --renders to VNC port 5901
  appname4 -qws -display VNC::2   --renders to VNC port 5902
于 2011-10-29T08:46:48.823 に答える