code: def data(self, index, role=Qt.DisplayRole):
          
          if not index.isValid() or not 0 <= index.row() < len(self._rows):
              return to_qvariant()
          row = index.row()
          column = index.column()
  
          # Carefull here with the order, this has to be adjusted manually
          if self._rows[row] == row:
              name, unlink, link, fetch = [u'', u'', u'', u'']
          else:
              name, unlink, link, fetch = self._rows[row]
  
          if role == Qt.DisplayRole:
              if column == 0:
                  return to_qvariant(name)
              elif column == 1:
                  return to_qvariant(unlink)
              elif column == 2:
                  return to_qvariant(link)
              elif column == 3:
                  return to_qvariant(fetch)
          elif role == Qt.TextAlignmentRole:
              if column in [0]:
                  return to_qvariant(int(Qt.AlignLeft | Qt.AlignVCenter))
              elif column in [1, 2, 3]:
                  return to_qvariant(int(Qt.AlignHCenter | Qt.AlignVCenter))
          elif role == Qt.ForegroundRole:
              return to_qvariant()
          elif role == Qt.FontRole:
              font = QFont()
              if row in self._bold_rows:
                  font.setBold(True)
                  return to_qvariant(font)
              else:
                  font.setBold(False)
                  return to_qvariant(font)
          return to_qvariant()
docs: Override Qt method