无法使用Qt应用程序连接到X服务器:0.0

28

在Fedora 10上编译。

我刚开始写我的第一个qt GUI应用程序。我使用了所有默认设置。

它只是一个简单的表格。它建立没有任何错误。但是当我尝试运行该应用程序时,我收到以下消息:

Starting /home/rob/projects/qt/test1/test1/test1...
No protocol specified
test1: cannot connect to X server :0.0

非常感谢任何建议。

3个回答

47

一般的原因如下:

  1. 环境变量中没有设置DISPLAY。
    解决方案

    export DISPLAY=:0.0
    ./myQtCmdHere
    

    (这个似乎不是有问题的那个,因为它表明了它正在尝试连接到哪个X显示器。而且,它并不总是0.0,但大多数情况下是)

  2. 非授权用户尝试运行X应用程序
    解决方案(作为拥有X权限的用户,即:您自己)

    xhost +local:root   # where root is the local user you want to grant access to. 
    

1
只是一个快速的跟进。export DISPLAY=:0.0 是什么意思,为什么我的应用程序因此失败了?谢谢。 - ant2009
你的显示界面采用服务器-客户端模型。DISPLAY告诉应用程序它们的屏幕位置,通常采用IP:DISPLAY.SCREEN格式,但如果没有IP,则使用localhost。但在适当的条件下,你可以将应用程序“投射”到任何网络可访问的显示器上。 - Kent Fredric

5

同时,如果您希望您的X服务器能够接收TCP连接,则这些天您几乎总是需要显式启用此功能。要测试您的服务器是否允许远程TCP连接,请尝试:

telnet 127.0.0.1 6000

如果telnet能够连接,则您的X服务器正在侦听。如果不能连接,则任何远程X应用程序也无法连接,您需要在服务器上启用远程TCP连接。


2
在上面的回答中添加一些内容。 我在使用Travis运行Code2Pdf测试时遇到了类似的情况。 我使用xvfb-run解决了这个问题。引用自manpage,
xvfb-run是Xvfb(1x)命令的包装器,简化了在虚拟X服务器环境中运行命令(通常是X客户端或包含要运行的客户端列表的脚本)的任务。
我编写的脚本如下:
check_install_xvfb() { # check and install xvfb
    if hash xvfb-run 2>/dev/null; then
        :
    else
        sudo apt-get update
        sudo apt-get upgrade
        sudo apt-get install xvfb
    fi
}
check_install_xvfb
export DISPLAY=localhost:1.0
xvfb-run -a bash .misc/tests.sh
# .misc/tests.sh is script that runs unit tests. You can replace it with something suitable to you.

请忍受我的 Bash 代码风格。我是个新手 Bash 程序员。
运行上面的脚本对我很有帮助。你可以看到 构建失败构建成功
希望它能帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接