[英]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.