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

PyQt Python Discussion :

[PyQt] Attacher un slot à un signal avec des arguments


Sujet :

PyQt Python

  1. #1
    Membre confirmé
    Avatar de doof
    Inscrit en
    Août 2003
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 160
    Par défaut [PyQt] Attacher un slot à un signal avec des arguments
    Salut, j'ai une appli avec beaucoup de textLabels, la plupart une fois changés devant appeler une méthode similaire, pour ne pas avoir à multiplier les méthodes, j'aurais aimé en appeler une seule avec un argument de plus indiquant lequel a été changé.

    Concrètement, pour le moment, j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.qtapp.connect(self.win.aPt,SIGNAL("textChanged(const QString&)"), self.upAflotte)
    Syntaxe classique, ma définition de upAflotte est celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    def upAflotte(self, num):
    J'aimerais donc pouvoir passer un troisième argument, un int pour que upAflotte() agisse en conséquence... J'ai beau essayer toutes les syntaxes possibles et chercher sur le web, je ne trouve pas comment faire.

    Une âme généreuse pourrait-elle me venir en aide ?

  2. #2
    Membre expérimenté
    Avatar de bobuse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 232
    Par défaut
    Tu devrais trouver réponse à ta question là :
    http://www.riverbankcomputing.com/Docs/PyQt3/PyQt.html
    section "Signal and Slot Support"

  3. #3
    Membre confirmé
    Avatar de doof
    Inscrit en
    Août 2003
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 160
    Par défaut
    En effet, j'avais déjà entrevu cette possibilité.

    A ce que je comprends, le seul moyen serait de créer son propre pysignal qui comprendra tous les paramètres que je désire, et donc, dériver un par un chaque QlineEdit pour rajouter un signal qui l'identifie.

    C'est possible de cette façon, mais ça ne me satisfait guère, je voulais à la base réduire les slots, et voilà que pour arriver a mes fins, je me retrouve à multiplier les signaux !

    J'ai pour le moment adopté une autre méthode qui consiste en un seul slot sans argument qui parcourt tous mes QlineEdit pour récupérer les valeurs, c'est pas très fin sachant que normalement il n'y en a qu'une qui est changée au moment ou le signal est émit.

    Tu confirmes donc que l'unique moyen de passer des arguments se joue au niveau des signaux et non directement dans une connection ?

    Et sinon, d'ordre plus général, quand un slot reçoit un signal d'un widget QT, il n'y a pas moyen de savoir directement qui en est l'émetteur ?

  4. #4
    Membre expérimenté
    Avatar de bobuse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 232
    Par défaut
    Citation Envoyé par doof
    Tu confirmes donc que l'unique moyen de passer des arguments se joue au niveau des signaux et non directement dans une connection ?
    Je vais rien confirmer, car j'y connais pas grand chose ... Je me suis intéressé en pratique à pyQt depuis peu, et j'ai pas pu encore tout bien creusé et testé ...
    voilà un bout de code que j'avais récupéré dans un example :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.connect(job, SIGNAL('data(KIO::Job *, const QByteArray&)'), self,SLOT('slotData(KIO.Job,QByteArray)'))
    Au cas où ça t'inspirerai ...

    Citation Envoyé par doof
    Et sinon, d'ordre plus général, quand un slot reçoit un signal d'un widget QT, il n'y a pas moyen de savoir directement qui en est l'émetteur ?
    D'intuition je dirai non, mais là encore je connais pas tout de qt ...

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/11/2007, 18h21
  2. Redirection vers une page, avec des arguments
    Par ::Fistons dans le forum JSF
    Réponses: 3
    Dernier message: 29/07/2007, 15h25
  3. Démarrer un service avec des arguments
    Par erlou dans le forum VBScript
    Réponses: 1
    Dernier message: 24/07/2007, 12h03
  4. set_terminate : gestionnaire avec des arguments
    Par Patriarch24 dans le forum C++
    Réponses: 4
    Dernier message: 28/10/2006, 13h08
  5. Lancer un programme avec des arguments via IE...
    Par petozak dans le forum Général Conception Web
    Réponses: 6
    Dernier message: 24/03/2006, 11h51

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