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 :

Implémenter un événement itemChecked sur un QTreeView


Sujet :

PyQt Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2014
    Messages : 58
    Points : 20
    Points
    20
    Par défaut Implémenter un événement itemChecked sur un QTreeView
    Bonjour à tous,

    Je cherche comment implémenter un handler lorsque qu'un item d'un QTreeView est coché/décoché, pour me permettre de compter le nombre d'item coché et si il y en a au moins 1 alors je mets setEnable à True pour un widget. J'ai essayé ceci : http://stackoverflow.com/questions/1...idget-in-pyqt4

    Mais je n'ai pas de QTreeWidgetItem à la base.

    Par la même occasion quand le bouton sera activé je voudrais récupérer les items cochés pour les supprimer du QTreeView.

    Merci d'avance.

  2. #2
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Comment sont créés tes items checkables ? Côté code, je veux dire.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2014
    Messages : 58
    Points : 20
    Points
    20
    Par défaut
    Voici la méthode qui est appelé lorsque la fenêtre s'affiche : (ce n'est sans doute pas ce qu'il y a de plus propre, mais je débute avec PyQt et python en général)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    def add_data(self):
        self.model = QtGui.QStandardItemModel()
        labels = ("ID", "Name", "URL", "Folder")
        self.model.setHorizontalHeaderLabels(labels)
     
        query = QtSql.QSqlQuery("SELECT * FROM flipbook")
     
        while query.next():
            id = QtGui.QStandardItem(str(query.value(0)))
            name = QtGui.QStandardItem(query.value(1))
            url = QtGui.QStandardItem(query.value(2))
            folder = QtGui.QStandardItem(query.value(3))
            id.setCheckable(True)
            #id.setCheckState(QtCore.Qt.Checked)
     
            id.setEditable(False)
            name.setEditable(False)
            url.setEditable(False)
            folder.setEditable(False)
     
            self.model.appendRow((id, name, url, folder))
     
        self.flipbook_tree.setModel(self.model)

  4. #4
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Je suppose que ton flipbook_tree hérite de QAbstractItemView alors je verrais quelque chose comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            self.flipbook_tree.setModel(self.model)
            self.flipbook_tree.clicked.connect(self.on_tree_clicked)
     
        def on_tree_clicked(self, index):
            item = self.model.itemFromIndex(index)
            if item.column() == 0:
                if item.checkState() = QtCore.Qt.Checked:
                    # item 'ID' est coché ...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2014
    Messages : 58
    Points : 20
    Points
    20
    Par défaut
    Mon flipbook_treeview est un QTreeView. Par contre je ne veux pas détecter quand on clic sur la ligne, mais lorsque la checkbox est coché en passant seulement par la checkbox.

  6. #6
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Les QStandardItem n'ont pas de signaux, tu dois passer par le QTreeView et trier les événements.

    http://pyqt.sourceforge.net/Docs/PyQ...ndarditem.html

Discussions similaires

  1. [JTextPane] Ajouter un évènement souris sur un mot
    Par soad dans le forum AWT/Swing
    Réponses: 12
    Dernier message: 20/03/2007, 15h12
  2. [DOM] Pb gestion de l'évènement mouseout sur une <DIV>
    Par rvux69 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/01/2007, 21h27
  3. Réponses: 1
    Dernier message: 08/11/2006, 17h23
  4. Problème d'évènement click sur mon onglets
    Par bitou11 dans le forum Access
    Réponses: 7
    Dernier message: 02/08/2006, 23h24
  5. événement Click sur Check et option button ??
    Par badsepuku dans le forum IHM
    Réponses: 3
    Dernier message: 09/02/2006, 12h51

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