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 :

Stopper un slot à partir d'un autre


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 111
    Par défaut Stopper un slot à partir d'un autre
    Bonjour,

    J'ai créé de nombreux slots dans mon application QT, seulement je ne ne trouve pas comment fermer ou stopper un slot() à partir d'un autre slot().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void MainWindow::slot1(){
    //Lancement d'un script python à durée illimitée si on l'arrête pas
    }
    void MainWindow::slot2(){
    //slot1.stop() ? ou quelque chose comme cela
    }
    Je pense que c'est possible mais je ne trouve nul part de réponse à ma question.

  2. #2
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Par défaut
    Bonjour,

    à mon avis, tu dois pouvoir le faire mais non pas avec un slot, plutôt un signal.
    Dans ton slot qui exécute un script pyhton, à l'émission d'un signal pour stopper le contenu du slot, tu fais un bête return.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 111
    Par défaut
    Bonjour, merci pour votre réponse,

    je ne suis pas sûre de vous avoir bien compris, je suis donc censé faire cela ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void MainWindow::slot1(){
    //Ce slot est sur un bouton Start
     
    //Lancement d'un script python à durée illimitée si on l'arrête pas
    QProcess *myProcess = new QProcess;
    myProcess->startDetached(dev/spectre.py);
     
    return; // ?
    }
    void MainWindow::slot2(){
    //Ce slot est sur un Bouton Stop
     
    //slot1.stop() ? ou quelque chose comme cela
    }
    En gros, je veux juste que quand j'appuie sur le bouton Stop, le script python en cours de fonctionnement s'arrête.

  4. #4
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Par défaut
    Ce que tu peux faire (ce n'est peut-être pas le plus propre), c'est conserver dans ta classe un booléen isWorking que tu met à true quand un signal est émis avec le bouton start, et à false si c'est l'autre signal qui est émis (celui du bouton stop, donc). Le tout, pour un seul slot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void slot()
    {
       if(isWorking)
       {
          //on stoppe l'éxecution du script
       }
        else
        {
          //on lance le script
        }
    }

    Pour ce qui est de stopper l'éxécution du script, c'est à toi de voir comment faire, car sans code je ne peux malheureusement pas t'en dire plus.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 111
    Par défaut
    Merci beaucoup, il n'y a pas un moyen de kill le Qprocess (dans mon cas myProcess) directement ?


    Dans mon code il n'y a rien de plus que ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void MainWindow::slot1(){
    //Ce slot est sur un bouton Start
     
    //Lancement d'un script python à durée illimitée si on l'arrête pas
    QProcess *myProcess = new QProcess;
    myProcess->startDetached(dev/spectre.py); //cela lançe mon spectre.py
    }

  6. #6
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Par défaut
    Citation Envoyé par quake3 Voir le message
    Merci beaucoup, il n'y a pas un moyen de kill le Qprocess (dans mon cas myProcess) directement ?


    Dans mon code il n'y a rien de plus que ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void MainWindow::slot1(){
    //Ce slot est sur un bouton Start
     
    //Lancement d'un script python à durée illimitée si on l'arrête pas
    QProcess *myProcess = new QProcess;
    myProcess->startDetached(dev/spectre.py); //cela lançe mon spectre.py
    }
    Essayez de prendre le réflexe de chercher d'abord et avant tout une réponse dans la doc , vous pourriez rapidement trouver vous-même une solution

    Surtout que Qt propose une très bonne documentation, et developpez.com propose même une traduction française d'une grosse partie de cette documentation (dont la classe QProcess)

    Dites-nous si cela a résolu votre problème ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête update à partir d'une autre table
    Par amiral thrawn dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/02/2024, 11h40
  2. Réponses: 3
    Dernier message: 24/01/2015, 21h54
  3. [VB.NET] Activer procédure d'une form à partir d'une autre
    Par ricil78 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 02/05/2004, 14h52
  4. UPDATE : table à partir d'une autre
    Par Laura dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/10/2003, 21h34
  5. Lancer un prog du DD à partir d'un autre prog
    Par le mage tophinus dans le forum Assembleur
    Réponses: 12
    Dernier message: 22/01/2003, 14h24

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