2016-09-15 2 views
0

J'essaye d'ajouter un checkbow à chaque rangée dans un QTableWidget, malheureusement il semble seulement apparaître dans la première rangée. Voici mon code:Python - Ajouter une case à cocher à chaque ligne dans QTableWidget

data = ['first_row', 'second_row', 'third_row'] 
nb_row = len(data) 
nb_col = 2 

qTable = self.dockwidget.tableWidget 
qTable.setRowCount(nb_row) 
qTable.setColumnCount(nb_col) 
chkBoxItem = QTableWidgetItem() 

for row in range(nb_row): 
    for col in [0]: 
     item = QTableWidgetItem(str(data[row])) 
     qTable.setItem(row,col,item) 
    for col in [1]: 
     chkBoxItem.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled) 
     chkBoxItem.setCheckState(QtCore.Qt.Unchecked)  
     qTable.setItem(row,col,chkBoxItem) 

Est-ce que je manque quelque chose d'évident?

J'ai vérifié les postes suivants:

Répondre

2

Ok, je viens d'avoir à mettre chkBoxItem = QTableWidgetItem() dans la dernière boucle (je suppose qu'il doit créer une nouvelle QTableWidgetItem() article par rangée ...):

for col in [1]: 
    chkBoxItem = QTableWidgetItem() 
    chkBoxItem.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled) 
    chkBoxItem.setCheckState(QtCore.Qt.Unchecked)  
    qTable.setItem(row,col,chkBoxItem)