2009-03-14 2 views
27

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

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

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

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

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

ответ

40

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

  1. DISPLAY не установлена ​​в среде.
    Решение:

    export DISPLAY=:0.0 
    ./myQtCmdHere 
    

    (Это один не появляется, чтобы быть один виноват, хотя, как его высказывании, которое X отобразить его пытается подключиться к Кроме того, его не всегда 0.0, но большинство. время это)

  2. Non-Авторизованный Пользователь пытается запустить Х-вку
    Решение (в X владеющую пользователя, т.е. себя)

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

Просто быстрое наблюдение.Что это делает: экспортируйте DISPLAY =: 0.0 и почему мое приложение завершилось неудачей из-за этого? Спасибо, – ant2009

+0

ваш интерфейс интерфейса работает с клиент-серверной моделью. DISPLAY сообщает приложениям, где находится его экран, обычно IP: формат DISPLAY.SCREEN, но без IP он использует localhost. Но, учитывая правильные условия, вы можете «бросить» и приложение на любом доступном для сети экране. –

4

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

телнет 127.0.0.1 6000

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

2

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

Xvfb перспектива является оболочкой для команды 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. 

Пожалуйста, медведь с моим стилем Баш кода. Я программист noob bash.

Выполнение вышеуказанного сценария помогло мне. Вы можете посмотреть failing build и passing build.

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