web-dev-qa-db-ja.com

QtアプリケーションでXサーバー:0.0に接続できません

Fedora 10でコンパイルします。

最初のqt GUIアプリケーションを開始しました。すべてのデフォルト設定を使用しました。

そのシンプルなフォーム。エラーなしで正常にビルドされます。しかし、アプリケーションを実行しようとすると。次のメッセージが表示されます。

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

アドバイスをありがとう、

27
ant2009

この一般的な原因は次のとおりです。

  1. 環境でDISPLAYが設定されていません。
    ソリューション

    export DISPLAY=:0.0
    ./myQtCmdHere
    

    (ただし、このXは、どのXが接続しようとしているのかを示すため、障害のあるものではないようです。また、常に0.0とは限りませんが、ほとんどの場合はそうです)

  2. Xアプリケーションを実行しようとしている非承認ユーザー
    Solution(Xを所有するユーザー、つまり:自分自身)

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

また、XサーバーがTCP経由で接続を受信できるようにしたい場合、最近ではほとんど常に明示的にこれを有効にする必要があります。サーバーがリモートTCP=接続を許可しているかどうかをテストするには:

telnet 127.0.0.1 6000

Telnetが接続できる場合、Xサーバーはリッスンしています。できない場合は、リモートXアプリケーションも使用できず、サーバーでリモートTCP接続を有効にする必要があります。

5
dicroce

上記の回答に追加します。 travisで Code2Pdf のテストを実行しているときに、私は同様の状況にありました。 xvfb-run を使用して問題を解決しました。マンページから引用すると、

xvfb-runは、仮想Xサーバー環境内でコマンド(通常はXクライアント、または実行するクライアントのリストを含むスクリプト)を実行するタスクを簡素化するXvfb(1x)コマンドのラッパーです。

私が書いたスクリプトは次のとおりです。

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コードスタイルに耐えてください。私はnoob bashプログラマーです。

上記のスクリプトを実行すると助けになりました。 失敗したビルド および 成功したビルド を確認できます。

それが役に立てば幸い

2
Tushar Gautam