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 :

selectionChanged TreeView [Débutant(e)]


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Jazz_
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 290
    Par défaut selectionChanged TreeView
    Bonjour,

    je suis un peu perdue, j'aissaie de m'abonner a l'evenement selectionchanged du mon QTreeView :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ## Dans une classe :
     
    def setSignals(self):
    		QObject.connect(self.ui.treeView,SIGNAL("selectionChanged()"), self.tree_clicked)
     
    def tree_clicked(self): #, newSelection, oldSelection):
    		print "changed"
    		if self.ui.treeView.SelectedIndex >= 0:
    			node = self.ui.treeView.SelectedNode()
    			print node
    et cela ne fonctionne pas, ca ne rentre jamais dans tree_clicked.
    Comment faire?

    Merci d'avance,
    Cordialement,

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je n'ai pas trouvé "selectionChanged()" en tant que signal de QTreeView: voir la doc: http://doc-snapshot.qt-project.org/4.8/qtreeview.html.

  3. #3
    Membre éclairé Avatar de Jazz_
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 290
    Par défaut
    Merci de ta réponse,

    Je l'ai trouvé dans la doc de pyqt4 :

    http://www.riverbankcomputing.co.uk/...lectionChanged

    apperement c'est une fonction hérité de QAbstractItemView.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par Jazz_ Voir le message
    Merci de ta réponse,

    Je l'ai trouvé dans la doc de pyqt4 :

    http://www.riverbankcomputing.co.uk/...lectionChanged

    apparement c'est une fonction hérité de QAbstractItemView.
    A mon sens, on ne connecte que des "signaux" à des "slots" et les "slots" ne sont que des méthodes particulières.

    Un signal n'existe pas en tant que méthode, c'est juste une chaîne de caractères qui donne le "prototype" des fonctions qui pourront lui être connecté.

    Mais vous pouvez éventuellement surcharger selectionChanged pour lui faire faire .emit("selectionChanged()")

    Cordialement,
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    C'est bien ce que je disais: "selectionChanged()" n'existe pas en tant que signal. Le fait qu'il existe en tant que méthode ne sert à rien puisqu'un tel signal ne sera jamais émis.

    Les signaux qui sont émis par QTreeView sont précisés par la doc:

    Signals
    void collapsed ( const QModelIndex & index )
    void expanded ( const QModelIndex & index )

    6 signals inherited from QAbstractItemView
    1 signal inherited from QWidget
    1 signal inherited from QObject
    Comme le dit wiztricks, si ça ne suffit pas, on peut toujours créer de nouveaux signaux avec de nouveaux noms, mais il faut dans ce cas les émettre soi-même avec "emit" lorsque le contexte approprié est atteint.

    Commence par définir quel est l'évènement du QTreeView qui devrait émettre un signal, et cherche parmi les signaux existants s'il y en a un qui est prévu d'origine.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut

    Citation Envoyé par tyrtamos Voir le message
    Commence par définir quel est l'évènement du QTreeView qui devrait émettre un signal, et cherche parmi les signaux existants s'il y en a un qui est prévu d'origine.
    Je n'ai pas le temps de tester mais la doc dit:

    void QAbstractItemView::selectionChanged
    [virtual protected slot]

    This slot is called when the selection is changed. The previous selection (which may be empty), is specified by deselected, and the new selection by selected.

    La fonction n'est pas appelée via un signal particulier mais de façon discrétionnaire par le gestionnaire de sélection.
    Ma compréhension du "virtual, protected" est qu'à part "surcharger"/redéfinir la fonction dans une s/classe de QTreeView impossible que çà se passe.
    Et bien sûr, le "body" de la fonction pourra se contenter d'émettre tous les signaux avec les paramètres souhaités.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. TreeView et menu contextuel...
    Par agh dans le forum Composants VCL
    Réponses: 6
    Dernier message: 06/04/2009, 12h23
  2. TreeView -> ajouter un child à un noeud donné
    Par fake dans le forum Composants VCL
    Réponses: 6
    Dernier message: 26/03/2003, 17h14
  3. Réponses: 5
    Dernier message: 09/01/2003, 11h55
  4. où y a t il un tutorial pour le Treeview ??
    Par silvermoon dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/12/2002, 13h30
  5. [Pointer]Treeview.Data
    Par rbag dans le forum Composants VCL
    Réponses: 7
    Dernier message: 31/08/2002, 01h44

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