web-dev-qa-db-fra.com

Impossible de se connecter au serveur X: 0,0 avec une application Qt

Compilation sur Fedora 10.

Je viens de démarrer ma première application graphique qt. J'ai utilisé tous les paramètres par défaut.

C'est juste une forme simple. Il se construit OK sans aucune erreur. Mais quand j'essaie de lancer l'application. J'obtiens le message suivant:

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

Merci pour tout conseil,

27
ant2009

Les causes générales de ceci sont les suivantes:

  1. L'AFFICHAGE n'est pas réglé dans l'environnement.
    Solution:

    export DISPLAY=:0.0
    ./myQtCmdHere
    

    (Celui-ci ne semble pas être le responsable cependant, car il dit à quel X afficher sa tentative de connexion. De plus, ce n'est pas toujours 0,0, mais la plupart du temps c'est le cas)

  2. Utilisateur non autorisé essayant d'exécuter l'application X
    Solution (en tant qu'utilisateur propriétaire X, c'est-à-dire: vous-même)

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

De plus, si vous souhaitez que votre serveur X puisse recevoir une connexion via TCP, ces jours-ci, vous devez presque toujours l'activer explicitement. Pour tester si votre serveur autorise les connexions à distance TCP essayez:

telnet 127.0.0.1 6000

Si telnet est capable de se connecter, votre serveur X écoute. Si ce n'est pas le cas, aucune application X distante ne le sera non plus et vous devez activer les connexions TCP TCP distantes sur votre serveur).

5
dicroce

Ajout aux réponses ci-dessus. J'étais dans une situation similaire lors de l'exécution de tests pour Code2Pdf chez travis. J'ai résolu le problème en utilisant xvfb-run . Citant la page de manuel,

xvfb-run est un wrapper pour la commande Xvfb (1x) qui simplifie la tâche d'exécution de commandes (généralement un client X ou un script contenant une liste de clients à exécuter) dans un environnement de serveur X virtuel.

Le script que j'ai écrit était:

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.

Veuillez supporter mon style de code bash. Je suis un programmeur basob noob.

L'exécution du script ci-dessus m'a aidé. Vous pouvez voir les build échoué et build passant .

J'espère que cela aide

2
Tushar Gautam