Не удается подключиться к X-серверу:0.0 с приложением Qt

Компиляция на Fedora 10.

Я только что запустил свое первое приложение с графическим интерфейсом qt. Я использовал все настройки по умолчанию.

Это просто простая форма. Он строит ОК без каких-либо ошибок. Но когда я пытаюсь запустить приложение. Я получаю следующее сообщение:

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

Спасибо за любой совет,

3 ответа

Решение

Основные причины этого следующие:

  1. ДИСПЛЕЙ не установлен в окружающей среде.
    Решение:

    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. 
    

Кроме того, если вы хотите, чтобы ваш X-сервер мог получать соединение по TCP, в эти дни вы почти всегда должны явно включать это. Чтобы проверить, разрешает ли ваш сервер удаленные TCP-соединения, попробуйте:

телнет 127.0.0.1 6000

Если telnet может подключиться, значит ваш X-сервер прослушивает. Если это невозможно, то ни одно удаленное приложение X не будет работать, и вам необходимо включить удаленные TCP-соединения на вашем сервере.

Добавление к ответам выше. Я был в подобной ситуации, когда проводил тесты для Code2Pdf на travis. Я решил проблему с помощью xvfb-run. Цитирование из справочной страницы,

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. Я программист Noob Bash.

Запуск вышеуказанного скрипта помог мне. Вы можете увидеть неудачную сборку и проходящую сборку.

Надеюсь, поможет

Другие вопросы по тегам