繁体   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