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 :

Inclure un programme dans l'interface graphique Qt


Sujet :

Qt

  1. #21
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 39
    Par défaut
    Je vais approfondir l'usage de Qprocess alors ... pas trés intuitif tout ca pour moi, j'ai fait que des programmes consoles jusqu'a maintenant

    Juste, tu n'aurais pas un petit exemple concret d'usage de QProcess ... ?

  2. #22
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par sylar42 Voir le message
    Je vais approfondir l'usage de Qprocess alors ... pas trés intuitif tout ca pour moi, j'ai fait que des programmes consoles jusqu'a maintenant

    Juste, tu n'aurais pas un petit exemple concret d'usage de QProcess ... ?
    as tu regardé les lien?

    http://www.developpez.net/forums/sho...0&postcount=35
    http://www.developpez.net/forums/sho...5&postcount=36

  3. #23
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 39
    Par défaut
    Ah ok, javais pas vu le zip en bas pour l'exemple.
    Je vais voir ça... je pense que j'aurai des questions

  4. #24
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 39
    Par défaut
    Salut,

    Je crois que tu as raison, il faut que j'utilise QProcess.

    Corrige moi si je me trompe :

    mon code source du programme X est non inclus dans mon code de GUI.
    dans le code GUI, si je veux transmettre un nom de fichier à mon exécutable du programme X, je lance d'abord mon prog X avec m_process.start("chemin du .exe de X") puis je fais m_process.write("nom du fichier") ...
    Mon programme X étant modifiée et comportant un stdin qui attend (dans une boucle) l'arrivée du paramètre.

    C'est correct ?

    Mon prog X a besoin du 'nom du fichier' dès le début du prog.

    J'aimerai comprendre un peu mieux comment je récupère concrètement le paramètre dans mon programme X.

    Merci !

  5. #25
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par sylar42 Voir le message
    mon code source du programme X est non inclus dans mon code de GUI.
    dans le code GUI, si je veux transmettre un nom de fichier à mon exécutable du programme X, je lance d'abord mon prog X avec m_process.start("chemin du .exe de X") puis je fais m_process.write("nom du fichier") ...
    Mon programme X étant modifiée et comportant un stdin qui attend (dans une boucle) l'arrivée du paramètre.
    Tu peut passer une liste d'argument à ton programme avec le start
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    QStringlist argv;
    argv<<"nom du fichier";
    m_process.start("chemin du .exe de X",argv) ;

  6. #26
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 39
    Par défaut
    Ok merci, encore mieux !
    Pourrais tu me montrer comment je récupère concrètement cette valeur dans mon programme X ?
    stdin<<argv ?

    argv c'est le même parametre que ds le int main(int argc, char *argv[]), c'est fait exprès ?

    Je dirais que stdin est associé a un m_process.write, tu peux me donner un exemple d'utilisation de stdin ?

    Merci bcp !!!

  7. #27
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par sylar42 Voir le message

    argv c'est le même parametre que ds le int main(int argc, char *argv[]), c'est fait exprès ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Je dirais que stdin est associé a un m_process.write, tu peux me donner un exemple d'utilisation de stdin ?
    http://www.developpez.net/forums/sho...5&postcount=36

  8. #28
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 39
    Par défaut
    J'ai vu déja l'exemple ... très bien fait au passage !

    Mais je ne vois pas d'usage de stdin. J'aimerai juste connaître la syntaxe ac stdin pr recupérer l'info suite a un m_process.write

    Ok pr argv , mais comment je fais pour attribuer a ma variable string file_name du prog X, la valeur passer dans argv ? je suis pas du tout familier avec ce processus.
    String file_name = ???

  9. #29
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Salut Sylar42,

    Lorsque tu as posté sur l'autre forum, je t'ai indiqué un tuto illustrant l'utilisation de stdout et stdin. Qu'est ce que tu n'y pas compris?

  10. #30
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 39
    Par défaut
    Salut,

    Oui j'ai vu ton exemple. Mais ce que je veux savoir c'est exactement la question que je pose précédemment.
    Je me place du point de vue du code source du programme X (Mplayer dans ton exemple). Je ne sais pas comment modifier mon prog X pour pouvoir récupérer le paramètre passé en argument 'argv' du m_process.start dans le code source GUI.

    En l'occurrence ici je veux attribuer à ma variable string 'name_file' du code source de X, la valeur du paramètre passé en argument dans 'argv'...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // code dans la GUI
    QStringlist argv;
    argv<<"nom du fichier";
    m_process.start("chemin du .exe de X",argv) ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // code dans le programme X
    int main(int argc, char *argv[]), 
    string file_name =  ??? // je voudrais que (file_name=="nom du fichier"), quel code faut-il ?

    Merci pour votre aide à ce problème.

  11. #31
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Il est communément admis (ie, sur la très large majorité des systèmes) que argv[0] contient le nom du prog lancé. Donc les arguments au dit programme commence à partir de argv[1].
    A toi de vérifier si argc >= 2 pour ensuite accéder à argv avec le bon ensemble d'index (ici 1).

  12. #32
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par sylar42 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // code dans le programme X
    int main(int argc, char *argv[]), 
    string file_name =  ??? // je voudrais que (file_name=="nom du fichier"), quel code faut-il ?
    Merci pour votre aide à ce problème.
    ??
    si tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QStringlist argv;
    argv<<"nom du fichier";
    m_process.start("chemin du .exe de X",argv) ;
    ce sera
    Je ne vois pas ce que tu ne comprend pas.
    Sinon stdin == std::cin

  13. #33
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 39
    Par défaut
    file_name= argv[1]


    Parfait c'est ça que je voulais savoir

    Merci beaucoup ! Je continue ... bien évidemment d'autres questions suivront sans doute.

  14. #34
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    as tu compris la réponse???

  15. #35
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 39
    Par défaut
    Oauis j'ai compris pour argv.

    Et pour stdin, je ne savais pas que c t équivalent a std::cin ... comme lorsqu'on récupère une info tapée dans la console. Je vois mieux maintenant... je vais tester tout ça dans les jours qui viennent !

    Merci pour votre aide ! j'en ai bien besoin. C'est un peu déroutant pour moi de passer du monde des applications consoles au monde windows

  16. #36
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 39
    Par défaut
    Je reviens à la charge ...
    Question sans doute de débutant mais bon.

    Mon prog X que je lance (par le code ci-dessous) est un programme console.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // code dans la GUI
    QStringlist argv;
    argv<<"nom du fichier";
    m_process.start("chemin du .exe de X",argv) ;
    si je fais tourner X tout seul, il m'affiche les résultats du prog dans la console par des std:cout<<...
    Sauf que là, en lançant le .exe par QProcess, ça va pas marcher??!
    les stdout du prog X doivent être récupéré par des m_process.read (comme dans l'exemple que tu m'as fourni sur QProcess) ?

    N'y a t'il pas moyen de garder l'affichage console de mon programme X ???
    car comme je l'ai dit, je voulais me servir de l'interface que pour passer des arguments initiaux a mon .exe de X.

    Si c'est pas possible ... ça veut dire que je dois récupérer les données de X pour les afficher moi même en fenêtre QT ?

    Merci pour les précisions

  17. #37
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par sylar42 Voir le message
    Si c'est pas possible ... ça veut dire que je dois récupérer les données de X pour les afficher moi même en fenêtre QT ?
    Si tu peut (je pensais que personne allez demander). Mais je ne sait pas exactement comment ça joue sur les read et write . Si tu veut juste lancer ton appli et voir les résultat sur la console, regarde :
    http://qt.developpez.com/doc/latest/...essChannelMode
    http://qt.developpez.com/doc/latest/...annelMode-enum

    Comme tu as fait une ihm. Ne serait 'il pas plus simpa d'afficher les résultats sur l'ihm? (comme dans l'exemple)
    Tu pourra mettre des couleur et tout et tout

  18. #38
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Citation Envoyé par sylar42 Voir le message
    N'y a t'il pas moyen de garder l'affichage console de mon programme X ???
    car comme je l'ai dit, je voulais me servir de l'interface que pour passer des arguments initiaux a mon .exe de X.
    Non ce n'est pas possible. Pense que command agit comme une appli qui affiche ce que l'autre envoie sur la sortie standard et tu comprendras pourquoi c'est pas possible...

    Citation Envoyé par sylar42 Voir le message
    Si c'est pas possible ... ça veut dire que je dois récupérer les données de X pour les afficher moi même en fenêtre QT ?
    Oui. Ou sinon, utiliser QProcess::startDetached, mais il me semblait que Mongaulois avait déjà proposé la solution ?!

  19. #39
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par IrmatDen Voir le message
    Non ce n'est pas possible. Pense que command agit comme une appli qui affiche ce que l'autre envoie sur la sortie standard et tu comprendras pourquoi c'est pas possible...
    Lol. Je n'ai pas compris son problème dans ce sens. La il faudra une expliquation de plus pour bien t'aider.
    Nos deux réponses (moi et irmaden) sont correcte même si elles sont opposées.

    Citation Envoyé par IrmatDen Voir le message
    Oui. Ou sinon, utiliser QProcess::startDetached, mais il me semblait que Mongaulois avait déjà proposé la solution ?!
    Avec celle la, tu n'aura plus de contrôle de l'application lancé. A voir avec tes besoins.

  20. #40
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 39
    Par défaut
    Je crois que je vais utiliser QProcess::startDetached dans un premier temps , en lui passant les arguments initiaux.
    Ce sera plus simple.
    Dans l'absolu je n'ai pas besoin de contrôler le déroulement du programme, juste d'envoyer à mon programme les paramètres réglés dans l'interface .

    Mais, à termes oui j'aimerai récupérer mes données pour faire un joli affichage en fenêtre mais je ne pense pas en être capable pour le moment.

    Merci pour votre aide.

Discussions similaires

  1. "Fusion" de figure dans une interface graphique
    Par pouette13 dans le forum Interfaces Graphiques
    Réponses: 16
    Dernier message: 11/07/2007, 17h12
  2. Intégrer des programmes dans une interface graphique avec GUIDE
    Par maserati222e dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 24/05/2007, 12h30
  3. zoom dans une interface graphique type gui
    Par oregos dans le forum MATLAB
    Réponses: 1
    Dernier message: 25/04/2007, 13h45
  4. appel d'un binaire systeme dans une interface graphique
    Par elbronziero dans le forum Tkinter
    Réponses: 4
    Dernier message: 18/04/2007, 11h01
  5. [Debutant] se lancer dans l'interface graphique avec java?
    Par bambou dans le forum Interfaces Graphiques en Java
    Réponses: 17
    Dernier message: 14/12/2005, 01h45

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