2010-06-03 11 views
1

J'ai la méthode suivante dans mon application PyQt4. r2 est le nombre de rangs à déplacer, et r1 est la position où il doit être déplacé. Pour clarifier: la table est remplie de cellWidgets, pas de widgetItems.PyQt4 Déplacer la rangée QTableWidget avec les widgets

def move_row(self, r1, r2): 
    tt = self.tableWidget 
    tt.insertRow(r1) 
    for c in range(tt.columnCount()): 
     tt.setCellWidget(r1, c, tt.cellWidget(r2 + 1, c)) 
    tt.removeRow(r2 + 1) # <--- ??? 

Si je commente la dernière ligne, il se comporte comme prévu: la nouvelle ligne est insérée à la position r1, il est rempli de widgets de r2 (maintenant il est r 2 + 1), et le r2 + 1 rang est vide. Si je cache même cette ligne, elle se comporte bien, même si ce n'est pas ce que je veux (j'ai les lignes numérotées, et je ne veux pas que cette rangée cachée occupe le numéro). Mais si j'enlève la ligne, les widgets initialement possédés par elle disparaissent. On dirait que leur propriété est prise au premier emplacement et qu'elle n'est pas modifiée après le déplacement.

Des idées?

Répondre

1

J'ai finalement fini avec des valeurs de widgets copiant.