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 :

QTableView - sélection à la souris [QtGui]


Sujet :

PyQt Python

  1. #1
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Par défaut QTableView - sélection à la souris
    Bonjour,

    J'ai un problème avec un QTableView pour la sélection d'items (en l’occurrence, il s'agit de lignes). Lorsque l'utilisateur utilise le clavier, il n'y a aucun problème.
    Par contre, avec la souris, il en va tout autrement. S'il clique sur la première ligne dans mon exemple, cela va. Par contre, aucun moyen de sélectionner les suivantes.

    J'ai dû faire une c..ie quelque part mais où ?

    Quelque chose m'échappe et, j'ai beau me creuser, je ne vois rien

    Quelqu'un est-il déjà tombé sur ce problème ?


    PS : Voici le code utilisé :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    import sys
    from PyQt4 import QtGui, QtCore
    from datetime import date
     
     
    class MainWidget(QtGui.QWidget):
        def __init__(self,parent=None):
            QtGui.QWidget.__init__(self,parent)
     
            self.model = QtGui.QStandardItemModel()
            self.view = QtGui.QTableView()
            self.setmodelHeaders([u'Numéro',u'Nom',u'Date de\n naissance'])
            self.setmodelData([
                [1,'Lagaffe',date(1963,5,9)],
                [2,'Bertrand',date(1984,8,5)],
                [3,'Carvac',date(1978,4,2)]])
            self.view.setModel(self.model)
            self.view.setMinimumSize(350,100)
            self.setviewproperties()
            lay = QtGui.QGridLayout(self)
            lay.addWidget(self.view,3,0,3,1)
            self.disp = QtGui.QLabel('')
            lay.addWidget(self.disp,4,0,4,1)
            self.view.clicked.connect(self.dispLine)
            self.setLayout(lay)
     
        def setmodelHeaders(self,headers):
            for j,header in enumerate(headers):
                pi = QtGui.QStandardItem(header)
                self.model.setHorizontalHeaderItem(j, pi)
        def setmodelData(self,data):
            for i,row in enumerate(data):
                for j,col in enumerate(row):
                    item = QtGui.QStandardItem()
                    item.setTextAlignment(QtCore.Qt.AlignHCenter)
                    item.setEditable(False)
                    if isinstance(col,date): col = QtCore.QDate(col)
                    item.setData(col,QtCore.Qt.DisplayRole)
                    self.model.setItem(i,j,item)
        def setviewproperties(self):
            self.view.setSelectionMode(1) # Sélection unique
            self.view.setSelectionBehavior(1) # Sélectionb de ligne
            self.view.setWordWrap(True)
        def dispLine(self,index):
            self.disp.setText("Ligne cliquée %d" %index.row())
     
    if __name__== "__main__":
        app = QtGui.QApplication(sys.argv)
     
     
        w = MainWidget()
        w.show()
        sys.exit(app.exec_())
    Merci d'avance

    Petite précision.

    La barre de défilement, qui apparaît quand on minimise la fenêtre, n'est plus
    accessible elle non plus !

  2. #2
    Membre chevronné
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mai 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 290
    Par défaut
    Bonjour,
    Cela vient de ton layout.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    lay = QtGui.QGridLayout(self)
    lay.addWidget(self.view,0,0)
    self.disp = QtGui.QLabel('')
    lay.addWidget(self.disp,1,0)

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Par défaut Merci beaucoup
    Évidemment !

    Comme cela ça marche beaucoup mieux


    Quand je disais que j'avais certainement fait une c..ie
    Merci

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

Discussions similaires

  1. [WD-2013] Sélection par souris en enregistrement de macro
    Par defluc dans le forum VBA Word
    Réponses: 4
    Dernier message: 08/09/2014, 14h05
  2. [AC-2007] Zone de liste modifiable, sélection avec souris
    Par Liz99 dans le forum IHM
    Réponses: 3
    Dernier message: 02/02/2011, 12h50
  3. Réponses: 0
    Dernier message: 10/11/2010, 09h34
  4. [Flex4] sélection avec souris
    Par phoenixatareva dans le forum Flex
    Réponses: 3
    Dernier message: 22/09/2010, 09h51
  5. Création d'une zone de sélection à la souris
    Par bahiatoon dans le forum C++Builder
    Réponses: 16
    Dernier message: 09/12/2006, 15h03

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