martedì 1 dicembre 2009

QTableWidget

Questo pezzo di codice Python fa parte di un plug-in da me scritto per QGis.
Tale codice permette di popolare un oggetto QTableWidget.
Lista contiene un recordset risultato di una query con 2 fields

         self.tblTema.clear()
         self.tblTema.setRowCount(len(Lista))
         self.tblTema.setColumnCount(2)
         self.tblTema.setHorizontalHeaderLabels(["Tema", "Tipo"])
         self.tblTema.setSelectionMode(QTableWidget.SingleSelection)
         self.tblTema.setSelectionBehavior(QTableWidget.SelectRows)

         for i, Tema in enumerate(Lista):
             item = QTableWidgetItem(Tema[0])
             selected = item
             item.setData(Qt.UserRole, QVariant(long(id(Tema))))
             self.tblTema.setItem(i, 0, item)

             Tipo = Tema[1]
             item = QTableWidgetItem(Tipo)
             self.tblTema.setItem(i, 1, item)
         pass

         self.tblTema.resizeColumnsToContents()
Le prime 6 righe di codice servono per:
  • cancellare il contenuto dell'oggetto
  • determinare il numero di righe
  • settare il numero di colonne
  • inserire l'header dell'oggetto
  • abilitare la selezione dell'intera riga
Il FOR successivo serve invece a popolare l'oggetto con il contenuto del recordset. Da notare che l'oggetto viene popolato cella per cella.
L'ultima istruzione serve a ridimensionare le colonne al contenuto.