IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

QProcess et QTranslator


Sujet :

Qt

  1. #1
    Membre averti
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Points : 333
    Points
    333
    Par défaut QProcess et QTranslator
    Bonjour,

    J'ai un soucis de chargement de fichier de langues.

    J'ai deux applications dans des dossiers différents, l'une permet de lancer l'autre. La deuxième application se décline en plusieurs langues. Le chargement de la langue s'effectue correctement si je lance directement l'application via ma console. Par contre, en démarrant cette application via un QProcess, impossible de charger le fichier de langue.

    Le problème vient sans doute du "working directory" de l'application lancée par le QProcess.

    Voici ce que j'ai tenté, sans succès :

    Application 1 - Fonction "Lanceur" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    QString app2path; //Contient le chemin complet vers l'exécutable de l'application 2
     
    QProcess * proc = new QProcess(this);
    proc->setWorkingDirectory(QFileInfo(app2path).absoluteDir().absolutePath());
    proc->startDetached(app2path);
    Application 2 - main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    QApplication a(argc,argv);
     
    QTranslator translator;
    if(translator.load("app_de"))
        a.installTranslator(&translator);
    else
        qDebug() << "Unable to load language file !";
    la fonction load renvoie false quand l'appli est lancée depuis le QProcess ci-dessus, elle fonctionne très bien si l'appli est directement lancée.

    Savez vous comment régler ce problème en conservant l'accès au fichier de langue de manière relative (mettre un chemin absolu marche avec le QProcess, mais je veux faire sans) ?
    Un clavier Azerty en vaut deux.

  2. #2
    Membre averti
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Points : 333
    Points
    333
    Par défaut
    J'ai trouvé le hic : le workingDirectory doit se spécifier en argument à startDetached(). Ma manière de faire ne marche que pour start().

    Ce qui soulève un nouveau problème : finalement, je préfère start à startDetached car il me permet de communiquer avec le process lancé. Mon problème est que je n'ai plus de trace en console, le "stdout" de ce process n'est relié à rien.
    J'ai fouiné la doc, la fonction setStandartOutputFile("chemin/monfichier", Append); me permet de spécifier un fichier pour le stdout, mais elle ne semble pas fonctionner (fichier créé mais vide). Si ceci marche, j'afficherai les données via un "tail -f chemin/monfichier"
    Un clavier Azerty en vaut deux.

Discussions similaires

  1. Aide sur Qprocess
    Par Ryuzaki_L dans le forum Débuter
    Réponses: 5
    Dernier message: 28/08/2008, 14h02
  2. [Linux-Qt4.4]QProcess ne se termine pas!
    Par crtx_omar dans le forum Qt
    Réponses: 2
    Dernier message: 27/08/2008, 10h28
  3. Exemple QProcess FAQ: aide compréhension
    Par Nykoo dans le forum Qt
    Réponses: 9
    Dernier message: 01/04/2008, 00h28
  4. [QThread] QProcess et QSemaphore
    Par slymira dans le forum Multithreading
    Réponses: 11
    Dernier message: 29/11/2007, 11h40
  5. Réponses: 8
    Dernier message: 21/12/2006, 21h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo