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 :

[QListWidget] Ordre des items modifiés [QtGui]


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Ingénieur informatique scientifique
    Inscrit en
    Mai 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique scientifique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 313
    Par défaut [QListWidget] Ordre des items modifiés
    Bonjour,

    j'ai dans mon application un widget QListWidget contenant un certain nombre d'items, et l'utilisateur peut changer l'ordre de ces items en faisant un glisser-déposer avec la souris (il ne peut pas ajouter d'items provenant de l'extérieur, juste changer l'ordre de ceux qui y sont déjà).

    Je souhaiterais qu'une fonction soit appelée lorsque l'ordre des items a changé; ne trouvant pas de signal adapté à ce que je veux, je pensais utiliser le mouseReleaseEvent, mais je ne comprends pas comment l'utiliser pour qu'il s'active uniquement pour ce widget là...

    Quelqu'un peut-il m'aider?
    Merci d'avance.

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Normalement tu devrais déjà pouvoir gérer ça avec dropEvent(), sinon peut-être que le signal indexesMoved() émit par ton QListWidget est suffisant.

    À tester, je ne l'ai jamais utilisé.

  3. #3
    Membre éclairé
    Femme Profil pro
    Ingénieur informatique scientifique
    Inscrit en
    Mai 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique scientifique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 313
    Par défaut
    Merci,
    le dropEvent est en effet mieux adapté, mais je n'arrive pas à m'en servir! Comment indiquer que je veux récupérer les dropEvents de mon widget QListWidget (créé sous QtDesigner)?

    Le signal IndexesMoved à l'air intéressant aussi, mais il faut utiliser un QModelIndexList et je ne sais pas trop ce que c'est... Mon QListWidget contient uniquement des objets de la classe QListWidgetItem.

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Ok, tu n'as pas sous-classé la QListWidget, alors à l'instanciation de ton interface tu peux "rediriger" les événements de ses widget vers tes fonctions dans ton main.

    Sera plus clair avec exemple
    Ton code principal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            # Tu crées ta main window    
            self.ui = Ui_MainWindow()
            self.ui.setupUi()
            # Puis tu rediriges
            self.ui.listWidget.dropEvent = self.dropEvent
            # Si tu en as d'autres tu changes le nom de la fonction appelée
            self.ui.tableWidget.dropEvent = self.drop_event
     
        def dropEvent(self, event):
            # Ici tu gères ton event
    Il est aussi possible de créer un filtre d'événements, mais c'est horrrriblement compliqué. (en fait j'aime pas)

  5. #5
    Membre éclairé
    Femme Profil pro
    Ingénieur informatique scientifique
    Inscrit en
    Mai 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique scientifique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 313
    Par défaut
    Merci,
    ça fonctionne bien, ma fonction est bien appelée lorsque je modifie l'ordre des items, cependant à chaque fois, l'item que j'ai déplacé disparaît du QListWidget! Pourquoi ce comportement?

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Comme cela c'est difficile à dire mais je soupçonne que tu n'as pas retourné l'event après l'avoir capté.

    En général comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        def dropEvent(self, event):
            # Ici tu gères ton event
            ...
            # Ensuite, tu renvoies
            self.ui.listWidget.dropEvent(self, event)

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

Discussions similaires

  1. [QtGui] Ordre des items d'un QListWidget après un QDropEvent interne
    Par mokochan dans le forum PyQt
    Réponses: 10
    Dernier message: 08/08/2013, 10h12
  2. Report 6i en format texte : ordre des items
    Par reppier dans le forum Reports
    Réponses: 2
    Dernier message: 17/03/2010, 09h34
  3. [Joomla!] Ordre des items dans un menu
    Par pseudo88 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 30/09/2009, 17h28
  4. Changer l'ordre des Items de Menu.
    Par Ivynox dans le forum C#
    Réponses: 3
    Dernier message: 29/11/2007, 15h49
  5. [Portal 9iAS] : ordre des items dans une région
    Par melitta dans le forum Oracle
    Réponses: 8
    Dernier message: 21/10/2004, 14h01

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