簡體   English   中英

讓Qt VNC服務器工作

[英]Getting the Qt VNC Server to work

為嵌入式Linux編譯並安裝了Qt,並確保在./configure行中使用-qt-gfx-vnc

我用以下代碼啟動我的應用程序。

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

如果沒有"-display", "VNC:0"選項,應用程序將使用嵌入式設備的顯示器工作,但是使用這些選項, QVNCServer將在端口5900上創建,並且不會再顯示任何內容。 嘗試使用Ubuntu的Remove Desktop Viewer進行連接不起作用。 它只給出一個黑屏,沒有錯誤信息。

對於我的應用程序,我需要一個活動的VNC服務器,同時GUI被渲染到嵌入式顯示器。 理想情況下,我還希望能夠在我的應用程序中啟用/禁用VNC服務器。 我還需要能夠進行一些用戶身份驗證。

是否有可能使用Qt同時運行VNC服務器和標准qws ,或者我是否必須找到另一種解決方案?

"QVNCServer created on port 5900"表示您的Qt庫已編譯為包含Qt VNC服務器。 QVNCServer不是完整的VNC服務器,而是Qt顯示驅動程序,其輸出在網絡接口上作為VNC服務器提供。 “VNC服務器”不是一個單獨的進程,並且比完整的VNC服務器更簡單,因為它一次只能處理1個VNC客戶端,它只支持連接深度為32bpp的VNC客戶端。 我正在使用的Qt版本(4.2.2)中存在一個錯誤,如果VNC客戶端嘗試連接depth = 8(這是許多便攜式設備VNC客戶端的默認設置),則會導致QVNCServer掛起。 這可能是您連接到QVNC服務器的問題。 確保您的VNC客戶端配置為32位/ 24位/全彩色/高彩色。 我修補了我的QtGui庫源代碼,因此如果VNC客戶端沒有深度= 32,它會立即斷開連接。

下面是從命令行啟動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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM