Bonjour à tous,

Je crée une TableView basée avec un modèle, et lorsque je veux récupérer les données de la cellule sur laquelle l'utilisateur clique, je n'ai rien de probant.

Voici un code minimal fonctionnel
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
58
59
60
61
62
63
 
#!/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)
        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)],
            [4,'Louis',date(1980,2,1)],
            [5,'Lacours',date(1972,11,17)]])
        self.view.setModel(self.model)
        self.view.setMinimumSize(350,100)
        self.setviewproperties()
        lay = QtGui.QGridLayout(self)
        lay.addWidget(self.view,0,0)
        self.disp = QtGui.QLabel('---')
        lay.addWidget(self.disp,4,0,4,1)
        self.view.clicked.connect(self.dispData)
        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(QtGui.QAbstractItemView.SingleSelection) # Sélection unique
        self.view.setSelectionBehavior(QtGui.QAbstractItemView.SelectItems) # Sélectionb de ligne
        self.view.setWordWrap(True)
    def dispData(self,index):
        """
        """
        it = self.model.itemFromIndex(index)
        data = it.data()
        valide = u"Vrai" if data.isValid() else u'Faux'
        self.disp.setText(valide)
if __name__== "__main__":
    app = QtGui.QApplication(sys.argv)
 
 
    w = MainWidget()
    w.show()
    sys.exit(app.exec_())
Merci d'avance