Dans le post http://www.developpez.net/forums/d11...-base-donnees/ je cherche à remplir automatiquement un QTableWidget depuis une BDD puis à ajouter à chaque ligne un bouton dans la dernière colonne.

Pour le moment, j'ai choisi de contourner le problème en remplissant manuellement ce QTableWidget.

Le code ci-dessous me permet de faire ceci sans difficulté :
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
import sys
from PySide import QtGui, QtCore, QtSql
 
class Frame(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
 
        self.resize(600,500) 
        self.setWindowTitle('Application simple')
        self.setFont(QtGui.QFont("Verdana", 18, QtGui.QFont.Bold))
 
        self.crea()
 
    def crea(self):
        self.tab = QtGui.QTableWidget(self)
        #tab = QtGui.QTableView(self)
        self.tab.setGeometry(10, 10, 300, 200)
 
        self.tab.setColumnCount(2)
        self.tab.setRowCount(3)
 
        self.db = QtSql.QSqlDatabase.addDatabase("QSQLITE")
        self.db.setDatabaseName("essai_qtablewidget.s3db")
        self.db.open()
        self.model = QtSql.QSqlTableModel()
        self.model.setTable("toto")
        self.model.select()
        nb_row = self.model.rowCount()
        a = 0
        liste = []
        while a < nb_row:
            record = self.model.record(a)
            contact = str(record.value(0)) + " " + str(record.value(1))
            liste.append(contact)
            a +=1
        liste.sort()
 
 
        for i in liste:
            globals()['btn'+str(liste.index(i))] = QtGui.QPushButton("Supprimer")
            self.tab.setCellWidget(liste.index(i), 1, globals()['btn'+str(liste.index(i))])
 
            globals()['label'+str(liste.index(i))] = QtGui.QLabel(str(i))
            self.tab.setCellWidget(liste.index(i), 0, globals()['label'+str(liste.index(i))])
            globals()['btn'+str(liste.index(i))].clicked.connect(self.act)
 
 
    def act(self):
        print self.tab.currentRow()
 
 
app = QtGui.QApplication(sys.argv)
frame = Frame()
frame.show()
sys.exit(app.exec_())
Le souci que je rencontre actuellement ce situe au niveau du slot act.
En effet celui-ci me renvoie systématiquement le n° de la ligne contenant le bouton cliqué en premier et non le n° correspondant au bouton venant d'être cliqué.

Quelqu'un a-t-il une idée?

D'avance merci